每天一道劍指offer-二叉樹的下乙個結點給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
思路分析二叉樹的下乙個節點,一共有以下情況:
1.二叉樹為空,則返回空;
2.節點右孩子存在,則設定乙個指標從該節點的右孩子出發,一直沿著指向左子結點的指標找到的葉子節點即為下乙個節點;
3.節點不是根節點。如果該節點是其父節點的左孩子,則返回父節點;否則繼續向上遍歷其父節點的父節點,重複之前的判斷,返回結果。**如下:
**
/*
public class treelinknode }*/
public class solution
treelinknode temp = pnode.next;//父節點
treelinknode pre = pnode;//當前節點
while(temp != null)
return temp;
}}
每天一道劍指offer 重建二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 根據二叉樹前序遍歷和終須遍歷可以唯一確定一顆二叉樹 前序遍歷順序 先遍歷根節點,在前序遍歷左子節點,最後前序遍歷右子...
每天一道劍指offer 對稱的二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。複製乙個相同的二叉樹,比較左子節點和右子節點的值,使用遞迴完成 boolean issymmetrical treenode proot public boolean real treeno...
每天一道劍指offer 從上往下列印二叉樹
從上往下列印出二叉樹的每個節點,同層節點從左至右列印。從上往下的遍歷二叉樹,不像前序,中序,後序一樣,我們需要乙個容器儲存子節點,從左往右順序新增,然後從左往右輸出,遍歷,這種先進先出規則的容器應該是佇列,我們可以定義乙個陣列來模擬佇列,儲存當前結點下的子節點,遍歷這個結點之後的子節點並新增到佇列中...