二叉树及简单运用

树:

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

 

 

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

 

 二叉树:

每个节点的度<=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.找到两条路径的公共交点

方法二:

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

 

 

 

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

 

 

 注意外部循环的条件

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

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

 后序遍历的非递归实现

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roylelele

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值