給出每個節點的兩個兒子節點,建立一棵二叉樹(根節點為 111),如果是葉子節點,則輸入0 0
。建好樹後希望知道這棵二叉樹的深度。二叉樹的深度是指從根節點到葉子結點時,最多經過了幾層。
最多有 10610^6106 個結點。無無
輸入 #1複製
72 73 6
4 50 0
0 00 0
0 0
輸出 #1複製
4這麼水的題本來不想寫部落格來著,後來還是打算寫一下提醒自己時刻記著題目裡的坑。
葉子節點可能是獨生子女!
#include usingnamespace
std;
int n,ans=0
;struct
node
tree[
1000005
];void dfs(int k,int
layer)
if(tree[k].l)dfs(tree[k].l,layer+1
);
if(tree[k].r)dfs(tree[k].r,layer+1);}
intmain()
dfs(
1,1);
cout
}
洛谷 P4913 深基16 例3 二叉樹深度
給出每個節點的兩個兒子節點,建立一棵二叉樹 根節點為 11 如果是葉子節點,則輸入0 0。建好樹後希望知道這棵二叉樹的深度。二叉樹的深度是指從根節點到葉子結點時,最多經過了幾層。最多有 10 6106 個結點。無無 輸入 7 2 73 6 4 50 0 0 00 0 0 0 輸出 4這道題考察了二叉...
洛谷 P4913 二叉樹深度 (二叉樹 dfs)
題目傳送 看題解有大佬有用樹狀dp的,還有說正解是長鏈剖分。我太菜了,上面那些都不會,用dfs遍歷ac了,不知道是不是資料太水讓我水過了。正應了acm圈一句名言 這題我雖然不會,但ac還是沒問題的 先用結構體建樹 struct node tree maxn 輸入 for int i 1 i n i ...
P5076 深基16 例7 普通二叉樹(簡化版)
您需要寫一種資料結構,來維護一些數 都是 10 9109 以內的數字 的集合,最開始時集合是空的。其中需要提供以下操作,操作次數 qq 不超過 10 4104 查詢 xx 數的排名 排名定義為比當前數小的數的個數 1 1。若有多個相同的數,因輸出最小的排名 查詢排名為 xx 的數。求 xx 的前驅 ...