重庆网站建设中心,关键词林俊杰免费听,搜寻的网站有哪些,大连建设工业产品网站给你二叉树的根节点root 返回它节点值的前序遍历 示例1#xff1a; 输入#xff1a;root [1,null,2,3] 输出#xff1a;[1,2,3] 示例 2#xff1a; 输入#xff1a;root [] 输出#xff1a;[] 示例 3#xff1a; 输入#xff1a;root [1] 输出#xff1a;[1] 示例…
给你二叉树的根节点root 返回它节点值的前序遍历 示例1 输入root [1,null,2,3] 输出[1,2,3] 示例 2 输入root [] 输出[] 示例 3 输入root [1] 输出[1] 示例 4 输入root [1,2] 输出[1,2] 示例 5 输入root [1,null,2] 输出[1,2]
方法递归
思路与算法 首先我们需要了解什么是二叉树的前序遍历按照访问根节点——左子树——右子树的方式遍历这棵树而在访问左子树或者右子树的时候我们按照同样的方式遍历直到遍历完整棵树。因此整个遍历过程天然具有递归的性质我们可以直接用递归函数来模拟这一过程。 定义 preorder(root) 表示当前遍历到 root 节点的答案。按照定义我们只要首先将 root 节点的值加入答案然后递归调用 preorder(root.left) 来遍历 root 节点的左子树最后递归调用 preorder(root.right) 来遍历 root 节点的右子树即可递归终止的条件为碰到空节点 代码 cpp
void preorder(struct TreeNode* root, int* res, int* resSize) {if (root NULL) {return;}res[(*resSize)] root-val;preorder(root-left, res, resSize);preorder(root-right, res, resSize);
}int* preorderTraversal(struct TreeNode* root, int* returnSize) {int* res malloc(sizeof(int) * 2000);*returnSize 0;preorder(root, res, returnSize);return res;
}