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