輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
總結:1、主要就是考察三種遍歷的知識點,前序遍歷必然是中,左,右。中序遍歷左,中,右,所以就可以找到陣列當中那些是左、右子樹
2、然後根據遞迴去查詢,通過陣列下標去標定查詢的範圍。就再把左子樹看成一顆樹,右子樹看成一棵樹。
注意:畫出輸出更好的觀察下標的寫法。要注意。
/**
* definition for binary tree
* struct treenode
* };
*/class solution
treenode* buildtree(vector& pre,int pleft,int pright,
vector& vin,int vleft,int vright)
treenode* root = new treenode(pre[pleft]);
root->left = buildtree(pre,pleft+1,pleft+i-vleft,vin,vleft,i-1);
root->right = buildtree(pre,pleft+i-vleft+1,pright,vin,i+1,vright);
return root;
}};
4 重建二叉樹
測試通過 時間限制 1秒 空間限制 32768k 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。時間限制 1秒空間限制 32768k 本題知識點 查詢 牛客網陣列題目鏈...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。例如前序遍歷序列和中序遍歷序列為和,假設結果中無重複的數字。重建二叉樹並返回 1 前序遍歷二叉樹的形式為 根節點,左子樹,右子樹 中序遍歷二叉樹的形式為 左子樹,根節點,右子樹 因此我們需要把前序遍歷的第乙個結果new乙個treenode 出來...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。先序序列第乙個數就是根結點而後是左子樹的先序序列和右子樹的先序序列,而中序序列是先是左子樹的中序序列,然後是根結點,最後是右子樹的中...