Leetcode刷题营第二十八题:二叉树的前序遍历
144. 二叉树的前序遍历
给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
解释:
示例 2:
输入:root = [1,2,3,4,5,null,8,null,null,6,7,9]
输出:[1,2,4,5,6,7,3,8,9]
解释:
示例 3:
输入:root = []
输出:[]
示例 4:
输入:root = [1]
输出:[1]
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
注意:这里题目要求我们返回一个数组,数组是通过前序排列的元素。
算法思想:利用递归算法返回数组及数组大小-->我们之前学习过的二叉树的遍历
但是这里我们在遍历的过程中需要把遍历的元素放入新数组中即可,同时要得到返回数组的大小,也就是要得到二叉树的大小,同样在二叉树的遍历我们也实现过。
在我们原本的前序遍历函数中往数组添加元素即可。
代码实现:
struct TreeNode {int _val;struct TreeNode *left;struct TreeNode *right; };int Treesize(struct TreeNode* root){if(root == NULL){return 0;}return 1+Treesize(root->left)+Treesize(root->right); }void PreOrder(struct TreeNode* root,int* array,int* index){if(root == NULL){return;};array[*index] = root->_val;(*index)++;PreOrder(root->left,array,index);PreOrder(root->right,array,index); }int* preorderTraversal(struct TreeNode* root, int* returnSize) {if(root == NULL){*returnSize = 0;return NULL;}int size = Treesize(root);*returnSize = size;int* array = (int*)malloc(size*sizeof(int));int index = 0;PreOrder(root,array,&index);return array; }
好了,本期分享的内容就到这里结束了。谢谢大家的点赞和支持!