当前位置:   article > 正文

二叉树及简单运用_二叉树运用

二叉树运用

树:

一棵树由若干子树组成,树是递归定义的。

 

 

 树的表现形式:孩子兄弟表示法

 

 二叉树:

每个节点的度<=2

树是递归定义的,整棵树是二叉树,那么二叉树的每棵子树也是二叉树。

满二叉树 完全二叉树

 

 

 

二叉树的存储:顺序存储和链式存储

顺序存储:孩子表示法和孩子双亲表示法

 

 手动创建一棵二叉树

 

 二叉树的遍历

前序遍历、中序遍历、后序遍历、层序遍历

前序遍历结果(根左右):1 2 3 4 5 6

中序遍历结果(左根右):3 2 1 5 4 6

后序遍历结果(左右根):3 2 5 6 4 1

层序遍历结果(从根出发,一层一层遍历):1 2 4 3 5 6

注意:

1.如果只给一个遍历,不能创建一棵二叉树

2.确定一个二叉树需要:前序+中序、后续+中序(中序用来确定左右子树)

 

 Oj中:

  二叉树的基本操作

 

 

oj例题:

 

翻转二叉树

 

 

注意:判断整棵树是高度平衡的二叉树,要保证每棵子树都是平衡的二叉树

思路:先求当前root节点是否是平衡的,再去判断左树是不是平衡的,右数是不是平衡的。

时间复杂度是O(N^{2})的算法

 时间复杂度是O(N)的算法

 

 

二叉树的层序遍历:

采用队列 进行入队和出队操作

确定每一层 

判断是否是完全二叉树

1.完全二叉树,每一层都是紧凑靠左排列的

2.叶子节点都在倒数第一层或者倒数第二层

 

 

 

修正:把第33行的int i=0;提前到31行并且修改为 private static int i=0;

这样i是全局变量,递归过程中i是累加的,不会从0再开始。

思路:1.存放从根节点到要找到节点之间的路径

           2.找到两条路径的公共交点

方法二:

二叉搜索树:根的左边数值比它小,根的右边数值比它大。

 

 

 

二叉树的前序遍历的非递归实现

 

 

 注意外部循环的条件

二叉树的中序遍历的非递归实现

前序中序不同的是添加到数组中的时机不同

 后序遍历的非递归实现

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/718403
推荐阅读
相关标签
  

闽ICP备14008679号