高階實驗8 2 3 二叉搜尋樹的最近公共祖先

2021-10-19 23:50:23 字數 1597 閱讀 7408

題目鏈結

思路:尋找公共祖先是題目主要任務,我選擇了將兩節點的祖先及自身分別都拋入兩個堆疊中,兩堆疊中丟擲的最後乙個兩者都有的元素即為兩節點公共祖先.

#include

#include

#include

#include

#include

using

namespace std;

const

int max =

10000

;int way;

//決定插入哪個堆疊中

int node[max]

,i;struct bst

}*head;

stack >s1;

stack >s2;

bst*

create_tree

(bst*head,

int s,

int e)

;bst*

assign_value

(int s)

;//為節點分配值

bool

insert

(bst* tmp)

;//向棧中插入祖先

bool

find_item

(bst*head,

int item)

;void

clear()

;//清空堆疊

bool

isfound

(int item1,

int item2)

;void

print_ancestor

(int item1,

int item2)

;int

main()

}bst*

create_tree

(bst* head,

int s,

int e)

bst*

assign_value

(int s)

void

clear()

bool

insert

(bst* tmp)

bool

find_item

(bst* head,

int item)

bool

isfound

(int item1,

int item2)

void

print_ancestor

(int item1,

int item2)

if(item1 == ancestor)

printf

("%d is an ancestor of %d.\n"

, item1, item2)

;else

if(item2 == ancestor)

printf

("%d is an ancestor of %d.\n"

, item2, item1)

;else

printf

("lca of %d and %d is %d.\n"

, item1, item2, ancestor);}

}

二叉堆和二叉搜尋樹高階

1 引言 演算法競賽高階指南 中指出,在二叉樹中,有兩組非常重要的條件,分別是兩類資料結構的基本性質。其一是 堆性質 若二叉樹中的任意乙個節點的權值都大於等於 小於等於 其父親節點,則稱該二叉樹滿足 小頂堆性質 大頂堆性質 其二是 bst性質 二叉樹上的每個節點都帶有乙個數值,稱為該節點的鍵值 ke...

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹的最近公共祖先

給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最近公共祖先...