思路:根據中序遍歷的特點,要找到乙個節點的下乙個節點無非就是三種情況:1、有右子樹,這時只需要把其右孩子作為下乙個遍歷的(並不是要找的)節點,然後沿著該節點的左子樹(如果有的話)出發,直到遇到葉子節點,那麼該葉子節點就是其下乙個要找的節點;2、沒有右子樹,則判斷該節點是否是其父節點的左孩子,如果是則其下乙個要找的節點是其父節點;3、如果不是其父節點的左孩子,則把其父節點作為下乙個遍歷的節點,向上回溯,直到找到父節點沒有父節點並且父節點是父節點的父節點的左孩子為止。綜合這三種情況就可以找到二叉樹中任意乙個節點的下乙個節點。
/*
public
class treelinknode }*/
public
class solution
//第二步:判斷是否是其父節點的左孩子
if(pnode.next == null) return
null;
if(pnode == pnode.next.left)
//第三步:向上找其父節點,直到父節點是其父節點的父節點的左孩子
curnode = pnode.next;
while(curnode.next != null)
//繼續向上找父節點
curnode = curnode.next;
}return
null;
}}
劍指offer之重構二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析先序遍歷的第乙個數肯定是根節點,然後在中序遍歷中這個數左邊就是根節點的左子樹,右邊的數就是右子數,依次,考慮先序遍歷的...
劍指offer之對稱二叉樹
請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如 這是乙個對稱二叉樹 8 6 6 5 7 7 5 這不是乙個對稱二叉樹 8 6 9 5 7 7 5 所有結點都有相同的值,樹不對稱 5 5 5 5 5 5 5 所有結點都有相同的值,樹不對稱 5 5 5...
劍指Offer之重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。該題目用到了遞迴分治的思想。先序遍歷二叉樹的第乙個節點肯定是根節點,那麼在中序序列中找到先序的對應資料的下標。根據前序和中序遍歷的性...