二叉樹中如何根據已知的兩種遍歷方法,求出第三種遍歷的結果
此題的答案是B。詳細解析如下:
知道先序是根->左->右,中序是左->根->右,後序是左->右->根,但是以前一直沒整明白怎麼根據已知兩個序遍歷求第三種遍歷(前提是一定要知道中序遍歷),今天做這個題的時候忽然腦袋開竅了。
最重要的一點就是:找到根->找到左右子樹一直重複這個操作,直到最後一個子節點。
先序遍歷的結果是ABDEFC,根據先序得到根節點是A.
中序遍歷的結果是DBFEAC,根據中序得到A之前的節點都是左子樹,A之後的節點都是右子樹,所以可以得出:
接著分析左子樹的情況,先序排列是BDEF,根節點是B,中序排列是DBFE,B之前的節點是它的左子樹,B之後的節點是它的右子樹,可以得出:
最後分析右子樹的情況,先序排列是EF,中序排列是FE,所以E是根節點,F是左節點。
最後就是:
得到後序遍歷:DFEBCA
相關推薦
二叉樹中如何根據已知的兩種遍歷方法,求出第三種遍歷的結果
此題的答案是B。詳細解析如下:知道先序是根->左->右,中序是左->根->右,後序是左->右->根,但是以前一直沒整明白怎麼根據已知兩個序遍歷求第三種遍歷(前提是一定要知道中序遍歷),今天做這個題的時候忽然腦袋開竅了。最重要的一點就是:找到
二叉樹面試題--已知二叉樹的兩種遍歷序列,求出另一種遍歷序列
已知先序遍歷序列和中序遍歷序列,求出後序序列 或者 已知中序序列和後序序列 , 求出先序遍歷。。都是一些考試中容易考的題目。 經過研究發現,已知先序序列和後序序列,無法唯一確定一棵樹,所以就無
二叉樹經典問題——已知中序和前序重建二叉樹
運用前序和中序序列重建二叉樹及其相關應用 重建過程 1,在二叉樹的學習中經常會遇到一類問題,就是給出一棵二叉樹的前序和中序序列(後序和中序類似)然後求樹的深度、樹的後序序列、樹的各種遍歷等等問題,這個時候如果能根據相關的序列把其代表的二叉樹重建出來,那麼所
編寫求任意二叉樹中一條最長的路徑的演算法,要求輸出此路徑上各結點的值及路徑的長度。
int Depth(BiTree T)/* 深度 */ { if(T==NULL) return(0); return 1+(Depth(T->lchild)>Depth(T->rchild)? Depth(T->lchild):Depth(T-&
求二叉樹中任意兩個結點的距離
case itl wid get ren return roo [] fall 求二叉樹中任意兩個結點的距離實現步驟:計算跟到第一個結點的距離;計算跟到第二個結點的距離;計算lca;計算跟到lca結點的距離;結果為(1) + (2) - 2 * (4),因為重復計算了兩次的
二叉樹中任意兩個節點的最近公共祖先
stc node comm cnblogs blog style == spa 發現 public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p,
求二叉樹中任意兩個結點間的路徑(C++)
方法一 #include <iostream> #include <vector> using namespace std; struct Node { int val; Node* left; Node* right; Node(int v
3.10 調整搜尋二叉樹中兩個錯誤的節點
【題目】: 一棵二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜尋二叉樹,請找到這兩個錯誤節點並返回。已知二叉樹中所有節點的值都不一樣,給定二叉樹的頭節點head,返回一個長度為2的二叉樹節點型別的陣列errs,errs[0]表示一個錯誤節點,errs[1]表示另一個錯誤節點
程式設計師面試100題之十六 二叉樹中兩個節點的最近公共父節點
這個問題可以分為三種情況來考慮:情況一:root未知,但是每個節點都有parent指標此時可以分別從兩個節點開始,沿著parent指標走向根節點,得到兩個連結串列,然後求兩個連結串列的第一個公共節點,這個方法很簡單,不需要詳細解釋的。情況二:節點只有左、右指標,沒有parent
【二叉樹】根據兩種遍歷順序確定樹結構(build-tree)
題目描述 輸入 第1行:二叉樹的前序遍歷順序第2行:中序遍歷順序 輸出 二叉樹的後序遍歷順序 樣例輸入 Copy (如果複製到控制檯無換行,可以先貼上到文字編輯器,再複製) ABCDEFGH CBEDAGHF 樣例輸出 CEDBHGFA -----------------
3.18 在二叉樹中找到兩個節點的最近公共祖先
【題目】: 給定一棵二叉樹的頭節點head,以及這棵樹中的兩個節點o1和o2,請返回o1和o2的最近公共祖先節點 例如,如下圖所示的二叉樹: 1 2
【資料結構】二叉樹中任意兩節點的最近公共祖先節點
問題要求:任意給出二叉樹中的兩個節點,求他們的最近祖先 分三種情況: 1、該二叉樹是搜尋二叉樹 如果兩個節點的值都大於根節點,則遍歷右子樹查詢一個處於兩節點之間的值為最近祖先,如果兩個節點的值都小於根節點,則遍歷左子樹查詢一個兩節點之間的值為最近祖先 插入程式碼 Node*
《程式設計師面試金典》--尋找二叉樹中兩個節點的第一個公共祖先(三種情況)
/**************************************************************************************************
搜尋二叉樹中兩個節點的最近公共祖先
搜尋二叉樹中兩個節點的最近公共祖先 Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the
二叉樹中找兩個結點的最近公共祖先結點
一、搜尋二叉樹:第一變種是二叉樹是一種特殊的二叉樹:查詢二叉樹。也就是樹是排序過的,位於左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點大。我們只需要從根結點開始和兩個結點進行比較。如果當前結點的值比兩個結點都大,則最低的共同父結點一定在當前結點的左子樹中。如果當前
資料結構演算法題/二叉樹中兩個節點的最近公共父節點
這個問題可以分為三種情況來考慮: 情況一:root未知,但是每個節點都有parent指標 此時可以分別從兩個節點開始,沿著parent指標走向根節點,得到兩個連結串列,然後求兩個連結串列的第一個公共節點,這個方法很簡單,不需要詳細解釋的。 情況二:節點只有左、右指標,沒有parent指標,roo
二叉樹中兩個節點的最低公共父節點
問題描述 構建一棵二叉樹(不一定是二叉查詢樹),求出該二叉樹中某兩個結點的最低公共父結點。借用一張圖如下: 最低公共父結點的思路 遞迴,首先從樹根開始考慮: ①結點A 和 結點B 要麼都在樹根的左子樹中;②要麼都在樹根的右子樹中;③要麼一個在左子樹中
求二叉樹中兩個節點的最近公共祖先(三叉鏈,搜尋樹,普通二叉樹)
求二叉樹中兩個節點的最近公共祖先。 要求:分別考慮以下三種情況 1、二叉樹每個節點有parent(三叉鏈) 2、二叉樹是搜尋二叉樹。 3、就是普通二
二叉樹中兩個節點的最近公共祖先(leetcode)
leetcode題目地址 二叉樹構造 TreeNode* t1 = new TreeNode(3); TreeNode* t2 = new TreeNode(5); TreeNode* t3 = new TreeNode(1);
求二叉樹中兩個節點的最近公共祖先結點
二叉樹是搜尋二叉樹 1、原理:二叉搜尋樹是排序過的 ,位於左子樹的結點都比父結點小,位於右子樹的結點都比父結點大,我們只需從根節點開始和兩個輸入的結點進行比較,如果當前節點的值比兩個結點的值都大,那麼最低的公共祖先結點一定在該結點的左子樹中,下一步開遍歷當前結點的左子樹。如