劍指offer 根據前序遍歷和中序遍歷確定樹

2021-09-11 18:45:45 字數 536 閱讀 3870

題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

思路:注意 前序遍歷和中序遍歷時根節點和左子樹都在右子樹前面。所以根據前序遍歷確定根節點,再根據在中序遍歷確定左右子樹的元素,遞迴向下找出所有節點的左右子樹元素。

treenode* reconstructbinarytree(vectorpre, vectorvin) 

} //分離根節點下的左右子樹

for (int i = 0; i < root; ++i)

for (int i = root + 1; i < vin.size(); ++i)

p->left = reconstructbinarytree(preleft, vinleft);

p->right = reconstructbinarytree(preright, vinright);

return p;

}

劍指offer 根據前序和中序確定二叉樹

重建二叉樹 根據前序和中序確定二叉樹 思路 遞迴,找到前序的第乙個元素在中序中的位置,該位置之前的元素均為左子樹,該位置之後的元素均為右子樹,遞迴處理左右子樹 class treenode public class reconstructbinarytree return construct pre...

根據前序遍歷和中序遍歷得出後序遍歷

首先要明確前序,中序和後序的遍歷順序 前序 父節點,左子節點,右子節點 中序 左子節點,父節點,右子節點 後序 左子節點,右子結點,父節點 明確之後,首先根據前序遍歷,確定整個二叉樹的根節點 前序的第乙個節點 再通過中序遍歷,可以直接根據根節點將整個二叉樹分為左右兩顆子樹.這時再逐步根據前序和中序順...

劍指offer 遍歷搜尋

1.廣度優先思想 適合題目 給定初始狀態跟目標狀態,要求從初始狀態到目標狀態的最短路徑。輔助資料結構是佇列。1.1 prime最小生成樹 1.2 dijkstra單源最短路徑演算法 1.3 樹的分層遍歷,二叉樹的最小深度 1.4 走迷宮,從起點到終點的最短路徑 定義乙個二維陣列 int maze 5...