找出二叉樹中某個節點的所有祖先節點

2021-07-10 08:24:58 字數 390 閱讀 9907

對於一顆普通的二叉樹和乙個節點key,找出該節點的所有祖先節點。

例如樹結構如下:給定的key為節點7,則應該列印 4,2,1。

1/   \

2      3

/  \

4     5/7

使用遞迴可以很容易的解決,**如下:

#includeusing namespace std;

struct node

};bool printancestors(node* _root, int target)

return false;

}node* newnode(int _data)

int main()

題目來自: 

二叉樹中找出2個節點的最近公共祖先

給定二叉樹和兩個節點n1和n2,編寫程式以找到他們的最近公共祖先。在做這個之前,有些東西需要提前問清楚,二叉樹是不是二叉搜尋樹,如果是二叉搜尋樹,那就好處理多了.在保證2個節點都屬於此二叉樹的情況下,由於二叉搜尋樹是排序過的,位於左子樹的結點都比父結點小,而位於右子樹的結點都比父結點大,node.d...

二叉樹 找出2個節點的最近公共祖先

給定二叉樹 不是二叉搜尋樹 和兩個節點n1和n2,編寫程式以找到他們的最近公共祖先 lowest common ancestor,lca 最近公共祖先是兩個節點所有公共祖先中離根節點最遠的節點。計算節點的最近公共祖先是很有用的。例如,為了確定樹中節點之間距離 從n1節點到n2節點的距離,可以計算從根...

求二叉樹某個結點的祖先

考試做到這一題,當時寫的很亂,這讓我很煩,題目就是在二叉樹查詢某個值的結點,如果找到則輸出該節點的所有祖先,那我當時想到的就是用後序遍歷的非遞迴演算法,如果找到的話,棧中的所有元素就是該節點的祖先,不過後序遍歷的話需要用乙個標記記錄棧頂元素,第一次訪問棧頂的元素的時候不出棧,第二次訪問棧頂元素的時候...