day15
1.222.完全二叉树的节点个数:可以把它当作普通二叉树去遍历,要遍历每个结点,代码更简单。此外还可以利用完全二叉树一直拆解成子树一定会出现满二叉树的特性(满二叉树的结点数量是2^n -1)去求结点数,可以少遍历内侧的一些结点,代码更复杂,效率更高,递归后序。
2.110.平衡二叉树:递归后序遍历。出口条件:空结点。单层递归处理逻辑:分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。
3.257. 二叉树的所有路径:递归前序遍历并回溯。当遍历到这条路径的最后一个叶子节点(注意没必要到空结点位置)就将这条路径放到结果集中去。递归处理逻辑:对左右子树进行遍历,并分别回溯(弹出路径的叶子结点,以及在递归函数控制权一级一级上交的过程中也弹出已经遍历过左右子树的相应结点,只保存公共路径,以岔到其他分支去)。
4.404.左叶子之和:左叶子:首先是叶子结点,然后还要是它父节点的左子树。递归后序遍历。
二叉树递归的题目思路都能理解,但是很容易忘记,只能后面多看多写几遍熟悉一下。今天学完了RAII资源管理、智能指针。加油!
2.110.平衡二叉树:递归后序遍历。出口条件:空结点。单层递归处理逻辑:分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。
3.257. 二叉树的所有路径:递归前序遍历并回溯。当遍历到这条路径的最后一个叶子节点(注意没必要到空结点位置)就将这条路径放到结果集中去。递归处理逻辑:对左右子树进行遍历,并分别回溯(弹出路径的叶子结点,以及在递归函数控制权一级一级上交的过程中也弹出已经遍历过左右子树的相应结点,只保存公共路径,以岔到其他分支去)。
4.404.左叶子之和:左叶子:首先是叶子结点,然后还要是它父节点的左子树。递归后序遍历。
二叉树递归的题目思路都能理解,但是很容易忘记,只能后面多看多写几遍熟悉一下。今天学完了RAII资源管理、智能指针。加油!
全部评论
相关推荐