增:(插入)

     若当前的二叉查找树为空,则插入的元素为根节点,

     若插入的元素值小于根节点值,则将元素插入到左子树中,

     若插入的元素值不小于根节点值,则将元素插入到右子树中,

   递归上述过程,直到找到插入点为叶子节点

 

查:

给定一颗二叉查找树,查找某节点p的过程如下:

 将当前节点cur赋值为根节点root;

 若p的值小于当前节点cur的值,查找cur的左子树;

 若p的值不小于当前节点cur的值,查找cur的右子树;

 递归上述过程,直到cur的值等于p的值或者cur为空;

 当然,若节点是结构体,注意定义“小于”“不小于”“等于”的具体函数。

删: 450. Delete Node in a BST

记待删除的节点为p,分三种情况进行处理:

 p为叶子节点

  p为叶子节点,直接删除该节点,再修改p的父节点的指针

 p为单支节点

  若p为单支节点(即只有左子树或右子除p即可

 p的左子树和右子树均不空

  法:

值;

并让x的父亲节点成为x的左子树的父亲节点。

  

 二叉树树的遍历 递归or非递归

 

前序遍历  : 144. Binary Tree Preorder Traversal (二叉树前序遍历) 

中序遍历 :173. Binary Search Tree Iterator(中序遍历)

 

后序遍历 :145. Binary Tree Postorder Traversal(二叉树后序遍历)

 

根据前序中序,构造二叉树 105. Construct Binary Tree from Preorder and Inorder Traversal (递归)

根据中序后序,构造二叉树  106. Construct Binary Tree from Inorder and Postorder Traversal

 

层序遍历(利用queue):

                 

      103. Binary Tree Zigzag Level Order Traversal -----层序遍历

      199. Binary Tree Right Side View -----层序遍历

      117. Populating Next Right Pointers in Each Node II(层序遍历暴力)

 
 

 

59按之字形顺序打印二叉树

60把二叉树打印成多行

 

 

二叉树相关:

    61序列化二叉树

    57二叉树的下一个结点

    58对称的二叉树 

    100. Same Tree

       

  •  求路径和

    • 112. Path Sum  (判断路径和是否等于某值)  (路径是从root到叶子节点)
    •   
    • 437. Path Sum III(路径可以任意点开始,任意点结束)
    • 129. Sum Root to Leaf Numbers(从根节点加到叶子节点的和)

 

 

 

二叉搜索树

98. Validate Binary Search Tree (验证二叉搜索树,中序遍历)

 

平衡二叉树 Balanced Binary Tree(AVL树)

这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。

 

 

相关文章: