ZOJ3805Machine 二叉樹左右子樹變換

2022-04-04 06:53:05 字數 1073 閱讀 4049

1/*2

題意:建立一棵二叉樹,左子樹和父節點佔乙個寬度,右子樹另外佔乙個寬度!

3使任意左右子樹交換順序,使得整個樹的寬度最小!

4思路:遞迴交換左右子樹 !

開始寫的**複雜了,其實左右子樹不用真的交換,只要返回交換與不交換最小的寬度值就好了,下次不用在查詢了!5*/

6 #include7 #include8 #include9 #include10

#define n 10005

11using

namespace

std;

1213

int tree[n][2

];14

intlink[n];

15int

n;16

17int dfs(int

cur)

2324

intmain()

35else

38}39 printf("

%d\n

", dfs(1

));40}41

return0;

42 }

1

//這個就是寫複雜了,但是很慶幸的過了!

2 #include3 #include4 #include5 #include6

#define n 10005

7using

namespace

std;89

int tree[n][2

];10

intlink[n];

11int

n, wide;

1213

int dfs(int

cur)

1920

void updatet(int

cur)33}

3435

intmain()

46else

49}50 updatet(1

);51 printf("

%d\n

", wide);52}

53return0;

54 }

ZOJ 3805 Machine(二叉樹,遞迴)

題意 一顆二叉樹,求 寬度 思路 遞迴,貌似這個思路是對的,先記下,但是提交時超時,1.如果當前節點只有左孩子,那麼當前寬度等於左孩子寬度 2.如果當前節點只有右孩子,那麼當前寬度等於右孩子寬度 3.如果當前節點既有左孩子又有孩子 3.1兩個孩子寬度相等,則當前寬度等於其中乙個孩子寬度 1 3.2兩...

Jzoj3805 小X的二叉堆計數

題意 給你n個不同的數問你能構成多少個不同的二叉堆 顯然不能列舉,我們考慮用遞推 我們令f i 表示以i為根的二叉堆有多少種 令l,r為i的左右兒子,令size i 為以i為根的堆的大小 那麼顯然,f i f l f r c size i 1,size l 因為n個數互不相同,所以沒有重複 相當於是...

zoj 1101 二分搜尋

感覺時間複雜度還是太高了,一開始自己寫了個二分搜尋。比stl裡的要慢個幾毫秒。可能是資料量太少了,體現不出來。if 1 include include include include using namespace std define my max 1001 long dight my max i...