原文:求二叉樹任意兩個結點最近的共同祖先

思路:用棧的非遞歸后根遍歷二叉樹時,遇到結點p時,棧中保存的即為p的所有祖先。利用這一點,在一次遍歷中分布找出p和q的所有祖先,再找它們的共同祖先就容易了。 時間復雜度:和后根遍歷一次二叉樹一樣,即O n 。 空間復雜度:O h ,h為二叉樹的高度。 數據結構: struct BinTreeNode typedef struct BinTreeNode PBinTreeNode struct Bi ...

2012-09-10 22:13 2 4857 推薦指數:

查看詳情

二叉樹任意兩個結點的距離

二叉樹任意兩個結點的距離 實現步驟: 計算跟到第一個結點的距離; 計算跟到第二個結點的距離; 計算lca; 計算跟到lca結點的距離; 結果為(1) + (2) - 2 * (4),因為重復計算了次的從跟到lca結點的距離; 1 class ...

Sat Aug 12 08:20:00 CST 2017 1 1858
二叉樹結點共同祖先問題

【問題描述】假設二叉樹采用二叉鏈表方式存儲,root指向根結點,p所指結點和q所指結點二叉樹中的兩個不同結點,且互不成為根到該結點的路徑上的點,編程求解距離它們最近共同祖先。【輸入形式】二叉樹的前序和中序遍歷序列,用以創建該二叉樹的鏈式存儲結構;以及二叉樹兩個結點數據 x 和 y【輸出形式 ...

Tue Jun 11 06:38:00 CST 2019 0 488
二叉樹任意兩個節點的最近公共祖先

思路:從根節點開始遍歷,如果node1和node2中的任一個和root匹配,那么root就是最低公共祖先。 如果都不匹配,則分別遞歸左、右子樹,如果有一個 節點出現在左子樹,並且另一個節點出現在右子樹,則root就是最低公共祖先. 如果兩個節點都出現在左子樹,則說明最低公共祖先在左 ...

Sat Oct 21 08:28:00 CST 2017 2 6536
二叉樹兩個節點的最近公共祖先

一、遞歸版本 思想:假設根結點為root,其中給定的兩個結點分別為A和B,它們分別都不為null。如果當前結點p為null,那么直接返回null,如果當前結點p是給定的結點中的其中一個結點,那么直接返回當前結點p(如果p是根結點,程序一次就返回了,下面的遞歸也不會出現)。如果當前節點不是A和B中 ...

Thu Aug 16 22:56:00 CST 2018 0 7429
尋找二叉樹兩個結點的最低共同父節點

題目:二叉樹結點的定義如下: 輸入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同結點。 答: 界面運行如下: 建造二叉樹的tree.txt文件如下: ...

Sat Sep 01 03:56:00 CST 2012 2 7037
二叉樹最近公共祖先節點

尋找最近公共祖先節點(LCA) 在一棵二叉樹中,對於節點X和節點Y,X和Y的LCA是這棵樹中X和Y的第一個共同祖先。尋找公共節點的算法思路很簡單:對於節點x和y,找到樹的根節點分別到x節點和y節點的路徑(並不是遍歷),並分別記錄在兩個數組中(或其他),數組中索引為0的元素為樹的根節點,索引 ...

Mon Jul 13 23:39:00 CST 2015 0 2353
二叉樹最近公共祖先

1.若二叉樹是一個搜索二叉樹 從樹的根節點開始和兩個節點作比較,如果當前節點的值比兩個節點的值都大,則這兩個節點的最近公共祖先節點一定在該節點的左子樹中,則下一步遍歷當前節點的左子樹;如果當前節點的值比兩個節點的值都小,則這兩個節點的最近公共祖先節點一定在該節點的右子樹中,下一步遍歷當前節點的右 ...

Mon May 28 22:52:00 CST 2018 0 1713
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM