LeetCode | 二叉树的前中后序遍历
- 这里我们使用递归的方法来解决
- 这里题目还要求我们返回这棵树的根
- 我们这里需要先算出这个树有多大
- 然后开辟空间
- 再进行前序的遍历
void preorder(struct TreeNode* root,int* a,int* pi) { if(root == NULL) return; a[(*pi)++] = root->val; preorder(root->left,a,pi); preorder(root->right,a,pi); } int TreeSize(struct TreeNode* root) { return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1; } int* preorderTraversal(struct TreeNode* root, int* returnSize) { //计算树有多少个节点 int n = TreeSize(root); *returnSize = n; //开辟n个大小 int* a = malloc(sizeof(int) * n); int i = 0; //前序遍历 preorder(root,a,&i); return a; }