0
点赞
收藏
分享

微信扫一扫

二叉树基础知识,BFC,DFS

zhongjh 2022-02-13 阅读 49

👍 👎 💯 👏 🔔 🎁 ❓ 💣 ❤️ ☕️ 🌀 🙇 💋 🙏 💦 💩 ❗️ 💢
————————————————

文章目录


知识点

二叉树

  • 若规定 根的节点层数为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)

  • 从队列中取出队首节点
  • 层序遍历经过该节点(打印)
  • 把该结点的左/右子结点放入队列中
    在这里插入图片描述

先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!

举报

相关推荐

0 条评论