👍 👎 💯 👏 🔔 🎁 ❓ 💣 ❤️ ☕️ 🌀 🙇 💋 🙏 💦 💩 ❗️ 💢
————————————————
文章目录
知识点
二叉树
- 若规定 根的节点层数为1,则一个非空二叉树的第 i 层上最多有2的i-1次方(i > 0)个结点
- 若规定二叉树的根节点深度为1,则深度为K的二叉树 最大节点数2的k次方-1
- 对于任意一个二叉树,如果叶子节点个数为n0,度为2的非叶子节点个数为n2,则n0=n2+1
- 具有n个节点的完全二叉树的深度k等于log以2为底n+1,向上取整
二叉树遍历
DFS:深度优先遍历-栈
前序遍历:
遍历顺序:递归
把根结点放在前面处理
1.首先,处理根节点
2.接着,完整的遍历根的左子树
3.最后,完整的遍历根的右子树
① 我们是从 根结点 开始,
即 : A{ } { }
② 由于我们是先遍历 左子树
所以, A { B{}{} } { }
A { B{ D{}{} }{} } { }
A { B{ D{}{undefinedG} }{} } { }
③ 最后遍历 右子树:
A { B{ D{}{undefinedG} }{} } { C{}{} }
A { B{ D{}{undefinedG} }{} } { C{undefinedE}{} }
A { B{ D{}{undefinedG} }{} } { C{undefinedE}{ F{}{} } }
A { B{ D{}{undefinedG} }{} } { C{undefinedE}{ F{undefinedH}{} } }
这样我们就得出了我们先序遍历出来的结果:
A B D G C E F H
中序遍历
- 遍历顺序:(递归)
1.先遍历整颗树的 左子树
2.中间再处理根节点
3.再遍历整颗树的右子树
我们先来遍历 左子树, 遍历的方式采用 中序遍历
{ {}B{} } A { }
{ { {}D{} }B{} } A { }
{ { {}D{undefinedG} }B{} } A { }
我们再来遍历 右子树,遍历的方式仍然采用 中序遍历
{ { {}D{undefinedG} }B{} } A { {}C{} }
{ { {}D{undefinedG} }B{} } A { {E}C{} }
{ { {}D{undefinedG} }B{} } A { {undefinedE}C{ {}F{} } }
{ { {}D{undefinedG} }B{} } A { {undefinedE}C{ {H}F{} } }
这样我们就得出了我们 中序遍历 出来的结果:
D G B A E C H F
后序遍历
- 遍历顺序 (递归)
1.先遍历左子树
2.再遍历右子树
3.最后处理根节点
我们先来遍历 左子树, 遍历的方式采用 后序遍历:
{ {}{}B } { }A
{ { {}{}D }{}B } { }A
{ { {}{undefinedG}D }{}B } { }A
我们再来遍历 右子树,遍历的方式仍然采用 后序遍历
{ { {}{undefinedG}D }{}B } { }A
{ { {}{undefinedG}D }{}B } { {}{}C }A
{ { {}{undefinedG}D }{}B } { {undefinedE}{}C }A
{ { {}{undefinedG}D }{}B } { {undefinedE}{ {}{}F }C }A
{ { {}{undefinedG}D }{}B } { {undefinedE}{ {undefinedH}F}{}C }A
这样我们就得出了我们 后序遍历 出来的结果:
G D B E H F C A
BFC:广度优先遍历
层序遍历(队列)
用途:判断是否为完全二叉树
- 按照从上到下,从左到右依次将二叉树遍历一遍
代码顺序
1.启动阶段:把根节点放入队列
2.开启循环,直到队列为空(isEmpty)
- 从队列中取出队首节点
- 层序遍历经过该节点(打印)
- 把该结点的左/右子结点放入队列中
先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!