144. 二叉樹的前序遍歷 - 力扣(LeetCode)
給你二叉樹的根節點?root
?,返回它節點值的?前序?遍歷。
?
?
這道題的啟發性真的很強?,這里必須傳入i的指針進去,下一次棧幀i++,但回到了上一層i又變回到了原來的i,所以這里需要用指針來控制數組的下表
/*** 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().*/
int TreeSize(struct TreeNode* root)
{if(root==NULL){return 0;}return TreeSize(root->left)+TreeSize(root->right)+1;
}
void preorder(struct TreeNode* root,int* arr, int* pi)
{if(root==NULL){return;}arr[(*pi)++]=root->val;preorder(root->left,arr,pi);preorder(root->right,arr,pi);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {*returnSize=TreeSize(root);int* arr=(int*)malloc(sizeof(int)*(*returnSize));int i=0;preorder(root,arr,&i);return arr;
}
?