生活随笔
收集整理的這篇文章主要介紹了
面试题7:重建二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接
這里是引用
LeetCode
題目
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。
解決
思路比較簡單,寫法稍微注意細節
struct TreeNode
* Creat(int* preorder
,int left1
,int right1
,int* inorder
,int left2
,int right2
)
{if(left1
>right1
){return NULL;}struct TreeNode
* ret
=(struct TreeNode
*)malloc(sizeof(struct TreeNode
));ret
->left
=ret
->right
=NULL;ret
->val
=preorder
[left1
];int i
=0;for(i
=left2
;i
<=right2
;i
++){if(inorder
[i
]==preorder
[left1
])break;}ret
->left
=Creat(preorder
,left1
+1,left1
+i
-left2
,inorder
,left2
,i
-1);ret
->right
=Creat(preorder
,left1
+i
-left2
+1,right1
,inorder
,i
+1,right2
);return ret
;}struct TreeNode
* buildTree(int* preorder
, int preorderSize
, int* inorder
, int inorderSize
)
{struct TreeNode
* head
=(struct TreeNode
*)malloc(sizeof(struct TreeNode
));int left1
=0;int right1
=preorderSize
-1;int left2
=0;int right2
=inorderSize
-1;head
=Creat(preorder
,left1
,right1
,inorder
,left2
,right2
);return head
;
}
總結
以上是生活随笔為你收集整理的面试题7:重建二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。