兩個二叉樹的問題

2021-08-22 03:31:12 字數 1134 閱讀 6901

乙個以1為根的帶權二叉樹,每個點都有個權值 vi

v i。

求每乙個點的左右關聯點個數。

倍增快速跳即可,**如下:

#include 

using

namespace

std;

#define r register

#define maxn 1000005

int n,v[maxn],lson[maxn],rson[maxn];

int f[maxn][20],ans[maxn][2];

template

inline

void read(r rme &x)

int main()

for (r int i=1;i<=n;++i)

for (r int i=1;i<=n;++i) printf("%d %d\n",ans[i][0],ans[i][1]);

return

0;}

問題一中的 vb

v

b全部替換成 va

v

a.。

簡單推一下即可,不會爆棧。

**如下:

#include 

using namespace std;

#define r register

#define maxn 1000005

int tesc;

int next_int()

int n,v[maxn],lson[maxn],rson[maxn],dep[maxn],cnt[maxn],ans[maxn][2];

void dfs(r int pos)

if(rson[pos])

}int main()

printf("%d %d\n",a,b);

return 0;

}

血的教訓:

倍增注意for的順序,先for0-32!

for (r int j=1;j

<=18;++j)

for (r int i=1;i

<=n;++i)

就這玩意兒調了我一晚上。。

合併兩個二叉樹

給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。示例 1 輸入 tree 1 tree 2 1 2 3 2...

二叉樹問題 尋找搜尋二叉樹中兩個錯誤的節點

題目 一棵二叉樹原本是搜尋二叉樹,但是其中有兩個節點調換了位置,使得這棵二叉樹不再是搜尋二叉樹,請找出這兩個錯誤的節點並返回。已知二叉樹中所有節點的值都不一樣,給定二叉樹的頭節點,返回乙個長度為2的二叉樹節點型別的陣列errs。def gettwoerrornode root errs none f...

二叉樹的建立以及兩個二叉樹比較異同

關於二叉樹的建構函式 在主調函式中並不宣告號指標所指向的空間,在被調函式中可以直接使用。二叉樹的定義,以及比較 include using namespace std 二叉樹的二叉鍊錶的節點定義 typedef struct bitnode bitnode,bitree 建立二叉樹 若該節點的資料為...