本文主要是介绍数据结构:(LeetCode144)二叉树的前序遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你二叉树的根节点 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
进阶:递归算法很简单,你可以通过迭代算法完成吗?
注意返回值类型
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
/*** Note: The returned array must be malloced, assume caller calls free().*///函数:求二叉树节点的个数 思路:根节点+左子树节点个数+右子树节点的个数typedef struct TreeNode TreeNode;
int TreeSize(TreeNode*root)
{if(root==NULL){return 0;}return 1+TreeSize(root->left)+TreeSize(root->right);
}
//递归二叉树
void _preorTraversal(TreeNode*root,int*arr,int*pi)
{if(root==NULL){return;}arr[(*pi)++]=root->val;_preorTraversal(root->left,arr,pi);_preorTraversal(root->right,arr,pi);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {//1.先求出二叉树节点的个数*returnSize=TreeSize(root);//2.给数组动态开辟空间int*returnArr=(int*)malloc(sizeof(int)*(*returnSize));//3.递归二叉树int i=0;_preorTraversal(root,returnArr,&i);return returnArr;
}
这篇关于数据结构:(LeetCode144)二叉树的前序遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!