題目描述:、
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
思路:
根據二叉樹前序遍歷和終須遍歷可以唯一確定一顆二叉樹
前序遍歷順序:先遍歷根節點,在前序遍歷左子節點,最後前序遍歷右子節點
中序遍歷順序:先遍歷左子節點,在遍歷根節點,最後遍歷右子節點
利用前序遍歷第乙個數字為根,用這個根在中序遍歷中查詢,左邊的就是左子樹,右邊的就是右子樹,算出左右子樹的長度,用其長度在前序遍歷中劃分出左右子樹,遞迴即可重建這顆二叉樹了。
**
public treenode reconstructbinarytree(int pre,int in)
public treenode reconstructbinarytree(int pre,int startpre,int endpre,int in,int startin,int endin)
treenode root = new treenode(pre[startpre]);
for(int i =startin;i<=endin;i++)
}return root;
}
每天一道劍指offer 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。複製乙個相同的二叉樹,比較左子節點和右子節點的值,使用遞迴完成 boolean issymmetrical treenode proot public boolean real treeno...
每天一道劍指Offer 30
date 2020 7 18 連續子陣列的 最大和 注意 子陣列的起點不一定是0 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個...
每天一道劍指offer 從上往下列印二叉樹
從上往下列印出二叉樹的每個節點,同層節點從左至右列印。從上往下的遍歷二叉樹,不像前序,中序,後序一樣,我們需要乙個容器儲存子節點,從左往右順序新增,然後從左往右輸出,遍歷,這種先進先出規則的容器應該是佇列,我們可以定義乙個陣列來模擬佇列,儲存當前結點下的子節點,遍歷這個結點之後的子節點並新增到佇列中...