二叉树的递归

165 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情。 ​

判断二叉树是否对称

树是根节点的左右子树,遍历两棵树而且要比较内侧和外侧节点,所以准确的来说是一个树的遍历顺序是左右中,一个树的遍历顺序是右左中。迭代法中我们使用了队列,需要注意的是这不是层序遍历,而且仅仅通过一个容器来成对的存放我们要比较的元素,认识到这一点之后就发现:用队列,用栈,甚至用数组,都是可以的。

二叉树的高度

image.png 可以使用前序,也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序呢求的是高度。而根节点的高度就是二叉树的最大深度,所以通过后序求的根节点高度来求的二叉树最大深度,二叉树:看看这些树的最大深度中使用的是后序遍历。

二叉树最小深度

image.png 求二叉树的最小深度稍不留心很容易犯错。**注意这里最小深度是从根节点到最近叶子节点的最短路径上的节点数量。注意是叶子节点。*什么是叶子节点,左右孩子都为空的节点才是叶子节点!求二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑。 如果是模拟前中后序遍历就用栈,如果是适合层序遍历就用队列,当然还是其他情况,那么就是 先用队列试试行不行,不行就用栈

简短的代码看不出遍历的顺序,也看不出分析的逻辑,还会把必要的回溯的逻辑隐藏了,所以尽量按照原理分析一步一步来,写出来之后,再去优化代码。