題目傳送
看題解有大佬有用樹狀dp的,還有說正解是長鏈剖分。。。
我太菜了,上面那些都不會,用dfs遍歷ac了,不知道是不是資料太水讓我水過了。正應了acm圈一句名言「這題我雖然不會,但ac還是沒問題的」。
先用結構體建樹:
struct node tree[maxn]
;
輸入:
for
(int i =
1; i <= n; i++
) cin >> tree[i]
.l >> tree[i]
.r;
dfs遍歷樹並更新答案:
void
dfs(
int u,
int deep)
完整ac**:
#include
#include
using
namespace std;
#define maxn 1000000+10
struct node tree[maxn]
;int ans;
void
dfs(
int u,
int deep)
intmain
(void
)
洛谷 P4913 深基16 例3 二叉樹深度
給出每個節點的兩個兒子節點,建立一棵二叉樹 根節點為 11 如果是葉子節點,則輸入0 0。建好樹後希望知道這棵二叉樹的深度。二叉樹的深度是指從根節點到葉子結點時,最多經過了幾層。最多有 10 6106 個結點。無無 輸入 7 2 73 6 4 50 0 0 00 0 0 0 輸出 4這道題考察了二叉...
洛谷 新二叉樹(P1305,二叉樹)
輸入一串二叉樹,輸出其前序遍歷。輸入格式 第一行為二叉樹的節點數 n。1 n 26 後面 n 行,每乙個字母為節點,後兩個字母分別為其左右兒子。空節點用 表示 輸出格式 二叉樹的前序遍歷。輸入輸出樣例輸入6 abcbdi cj d i j 輸出abdicj include using namespa...
二叉樹之 二叉樹深度
二叉樹深度 獲取最大深度 public static int getmaxdepth treenode root 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...