判斷一棵二叉樹是否為搜尋二叉樹和完全二叉樹
給定一棵二叉樹,已經其中沒有重複值的節點,請判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。
輸入描述:
第一行輸入兩個整數 n 和 root,n 表示二叉樹的總節點個數,root 表示二叉樹的根節點。
以下 n 行每行三個整數 fa,lch,rch,表示 fa 的左兒子為 lch,右兒子為 rch。(如果 lch 為 0 則表示 fa 沒有左兒子,rch同理)
ps:節點的標號就是節點的值
輸出描述:
第一行輸出該二叉樹是否為搜尋二叉樹的答案,如果是則輸出 「true」,否則輸出 「false」。
第二行輸出該二叉樹是否為完全二叉樹的答案,如果是則輸出 「true」,否則輸出 「false」。
備註:1≤n
≤5∗1
05
1 \leq n \leq 5*10^5
1≤n≤5∗
1051≤f
a,lc
h,rc
h,ro
ot≤n
1 \leq fa,lch,rch,root \leq n
1≤fa,l
ch,r
ch,r
oot≤
n 題解:判斷二叉搜尋樹:遞迴進行中序遍歷就行了,二叉搜尋樹的中序遍歷一定是公升序的,可以儲存中序遍歷的前乙個節點和當前節點進行判斷,一旦不滿足直接退出
判斷完全二叉樹:按照以下規則進行:
**:
#include
#include
using
namespace std;
const
int n =
500010
;struct bst bst[n]
;int n, rt;
int fa, lch, rch;
bool
is_bst
(int root,
int& pre)
bool
is_cbt
(int root)
return
true;}
intmain
(void
)int pre =0;
puts
(is_bst
(rt, pre)
?"true"
:"false");
puts
(is_cbt
(rt)
?"true"
:"false");
return0;
}
判斷一棵二叉樹是否為二叉搜尋樹
答案 自 由裁判實現,細節不表 bool isbst bintree t intmain 你的 將被嵌在這裡 2這種判斷方法是錯誤的,如下面例子所示,節點4處於根節點3的左子樹中,但是函式檢測到這棵樹是bst.判斷是否為bst 2bool isbst bintree t 36 7 如果是一顆二叉查詢...
判斷一棵二叉樹是否為平衡二叉樹
1.先給出樹節點資訊 typedef struct treetree,bitree 2.原理 判斷一棵樹是否為平衡二叉樹,要滿足每個節點的左右子樹的高度之差的絕對值不大於1。因此,我們這裡可以比較每個節點的左右字數高度,判斷他們差的絕對值是否滿足平衡二叉樹的條件即可 3.演算法 求二叉樹高度演算法 ...
判斷一棵二叉樹是否為平衡二叉樹
題目描述 對輸入的一棵樹,判斷是否為二叉樹。step1 對給定二叉樹的所有節點進行遍歷 step2 將每乙個節點都作為根節點,判斷其左右孩子的深度 step3 使用unordered map記錄下每個節點的深度,最後遍歷每個節點,判斷左右子樹深度之差是否小於等於1 如下 這個直接執行可能有些問題,我...