桐柏网站建设,社交网站设计,镇江大港属于哪个区,公司网站设计广州给你一棵二叉树的根节点root 返回其节点值的后序遍历 示例 1#xff1a; 输入#xff1a;root [1,null,2,3] 输出#xff1a;[3,2,1] 示例 2#xff1a; 输入#xff1a;root [] 输出#xff1a;[] 示例 3#xff1a; 输入#xff1a;root [1] 输出#xff1a;[1]… 给你一棵二叉树的根节点root 返回其节点值的后序遍历 示例 1 输入root [1,null,2,3] 输出[3,2,1] 示例 2 输入root [] 输出[] 示例 3 输入root [1] 输出[1] 递归
思路与算法 首先我们需要了解什么是二叉树的后序遍历按照访问左子树——右子树——根节点的方式遍历这棵树而在访问左子树或者右子树的时候我们按照同样的方式遍历直到遍历完整棵树。因此整个遍历过程天然具有递归的性质我们可以直接用递归函数来模拟这一过程 定义 postorder(root) 表示当前遍历到 root 节点的答案。按照定义我们只要递归调用 postorder(root-left) 来遍历 root 节点的左子树然后递归调用 postorder(root-right) 来遍历 root 节点的右子树最后将 root 节点的值加入答案即可递归终止的条件为碰到空节点
和前序和中序遍历是一样的大家可以画出递归展开图 有勇敢的小伙伴可以把自己画的后续递归展开图可以发在讨论区哦 给大家一个参考的二叉树 大家可以思考着画 也可以对着我前面的前序和中序遍历的递归展开图画 详细代码
void postorder(struct TreeNode *root, int *res, int *resSize) {if (root NULL) {return;}postorder(root-left, res, resSize);postorder(root-right, res, resSize);res[(*resSize)] root-val;
}int *postorderTraversal(struct TreeNode *root, int *returnSize) {int *res malloc(sizeof(int) * 2001);*returnSize 0;postorder(root, res, returnSize);return res;
}