給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
思路:首先知道中序遍歷的規則是:左根右,然後作圖
結合圖,我們可發現分成兩大類:1、有右子樹的,那麼下個結點就是右子樹最左邊的點;(eg:d,b,e,a,c,g) 2、沒有右子樹的,也可以分成兩類,a)是父節點左孩子(eg:n,i,l) ,那麼父節點就是下乙個節點 ; b)是父節點的右孩子(eg:h,j,k,m)找他的父節點的父節點的父節點...直到當前結點是其父節點的左孩子位置。如果沒有eg:m,那麼他就是尾節點。
public class solution
if(pnode.right != null)
return pnode;
}while(pnode.next != null)
pnode = pnode.next;
}return null;
}}
劍指offer 根據前序遍歷和中序遍歷確定樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 注意 前序遍歷和中序遍歷時根節點和左子樹都在右子樹前面。所以根據前序遍歷確定根節點,再根據在中序遍歷確定左右子樹的元...
劍指offer 遍歷搜尋
1.廣度優先思想 適合題目 給定初始狀態跟目標狀態,要求從初始狀態到目標狀態的最短路徑。輔助資料結構是佇列。1.1 prime最小生成樹 1.2 dijkstra單源最短路徑演算法 1.3 樹的分層遍歷,二叉樹的最小深度 1.4 走迷宮,從起點到終點的最短路徑 定義乙個二維陣列 int maze 5...
劍指offer 先序 中序遍歷結果重建二叉樹
題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。include include include using namespace std struct treenode 建立二...