DFS演算法總結之從前序 中序確定二叉樹

2021-10-10 10:16:16 字數 748 閱讀 6356

題目:

前序遍歷 preorder = [3,9,20,15,7]

中序遍歷 inorder = [9,3,15,20,7]

解題思路:

前序遍歷第一遍歷的點總是後面的根節點,而中序遍歷根節點是在「中間」的位置.如例子,整棵樹根節點肯定是3,而在中序遍歷中,3的左邊肯定左子樹,右邊是右子樹。這樣中序遍歷分成分成【根節點3】【15,20,7】三個部分,前序遍歷也分成【根節點3】【20,15,7】三個部分,將3作為根節點,和、【15,20,7】和【20,15,7】遞迴呼叫,就可以確定左右子樹的根節點。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

treenode* res=

dfs(preorder,

0,prer,inorder,

0,inr)

;return res;

} treenode*

dfs(vector<

int>

&pre,

int prel,

int prer,vector<

int>

&ino,

int inl,

int inr)

else

return

null;}

};

Leetcode 從前序與中序遍歷序列構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 definition for a binary tree node...

從前序 中序或者後序 中序序列中恢復二叉樹過程

給出前序遍歷和中序遍歷,如何繪製出二叉樹 如果給出遍歷產生的一串字元,不容易確定各個字元在樹中的具體位置,因而需要兩個遍歷串相結合才能畫出一棵二叉樹。如,給出前序遍歷adfghklpqrwz,中序遍歷gfhkdlawrqpz。其具體尋找過程如下 其中矩形內表示當前節點的左右子樹的元素,圓圈內為當前節...

從前序與中序遍歷構造二叉樹

從前序與中序遍歷序列構造二叉樹 根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3 9,20 15,7 中序遍歷 inorder 9 3,15 20,7 返回如下的二叉樹 3 9 20 157 definition for a b...