二叉树part04
二叉树的知识补充
- 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数
- 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数
- 根节点的高度就是二叉树的最大深度
- 使用前序(中左右)求的就是深度,使用后序遍历(左右中)求的是高度。
LC110平衡二叉树
- 无提示书写class和对应的构造函数不够熟悉,老是忘记构成函数传参需要制定参数类型
- 代码
- 使用前序的方法
LC257二叉树的所有路径(未掌握)
- 未掌握分析:回溯的终止条件思考错误,需要多加练习
- 终止条件有两个
- cur==null,直接结束本轮递归
- cur.left==null && cur.right==null,此时不能s += cur.val,因为如果+=,那么s还需要在result完成add(s)操作之后再将cur.val消除,因此使用StringBuilder更为简单,因为并不会改变s本身
LC404左叶子之和(未掌握递归)
-
递归法未掌握
- 递归的遍历顺序为后序遍历(左右中)
- 个人对为什么使用后序遍历的理解是:因为要先判断完左右子树才能得到根节点的结果,如果没有左右子树的结果根节点的结果也无从得知
- left是左子树的左叶子之和
- right是右子树的左叶子之和
- 以cur为根节点的子树并不是直接left+right,因为存在左子树是cur左叶子节点的情况,此时话需要加上左子树根节点的值,因此需要判断
-
迭代法:使用层序遍历