題目描述
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
/**
* definition for binary tree
* struct treenode
* };
*/class solution
}//根據根節點的位置,分成兩個子樹
for(int i=0;i1]);//根節點在第一,所以加1
inl.push_back(in[i]);
}for(int i=index+1;i//左,右子樹的前序和中序序列輸入,遞迴
head->left=reconstructbinarytree(prel,inl);
head->right=reconstructbinarytree(prer,inr);
return head;
}};
總結:使用遞迴! 重建二叉樹(前序和中序)
根據二叉樹的前序輸出和中序輸出重建這顆二叉樹 劍指offer上的一道題,思路 前序遇到的第乙個元素肯定是根節點,先建立乙個根節點,然後將這個值在中序序列中查詢他的位置用leftcount記錄,找到後將該值左面和右邊分別遞迴。include include include includeusing n...
演算法 給定二叉樹前序和中序序列重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 前序序列第乙個肯定為root,設值為n,則在中序序列中n所在位置左邊的肯定是左子樹的元素,右邊的是右子樹的元素,因此,遞迴找r...
重建二叉樹 前序遍歷和中序遍歷
主要程式設計思想 由於前序遍歷第乙個數永遠是根,中序遍歷根左邊是左子樹,右邊衛右子樹。因此,每次找到乙個根節點,前序遍歷就可以分成左子樹序列和右子樹序列,中序遍歷也可以分成左子樹序列和右子樹序列,分別建立左子樹和右子樹,所以是非常典型的遞迴問題 treenode rebuildtree vector...