二叉樹的前序遍歷(leetcode中級篇一百四十五題)
阿新 • • 發佈:2018-12-16
給定一個二叉樹,返回它的 前序 遍歷。
示例:
輸入: [1,null,2,3]
1
2
/
3
輸出: [1,2,3]
void PreOrder(struct TreeNode* root, int* returnSize, int* ans)
{
if(root != NULL)
{
ans[(*returnSize)++] = root -> val;
PreOrder(root -> left, returnSize, ans);
PreOrder(root -> right, returnSize, ans);
}
}
int TreeSize(struct TreeNode* root)//計算這顆樹有多少個結點
{
if(root == NULL) return 0;
return TreeSize(root -> left) + TreeSize(root -> right) + 1;
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
int size = TreeSize(root);
int* ans = (int*)malloc(sizeof(int)*size);
*returnSize = 0;
PreOrder(root, returnSize, ans);
return ans;
}
筆者就不把所有的程式碼都發出來了,其餘的倆種只是改變了那三行程式碼的順序即可。