7 3 樹的遍歷 25分

2021-10-10 17:00:35 字數 1773 閱讀 7593

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。

輸入第一行給出乙個正整數n(≤30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。

在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

723

1576

4123

4567

416

3572

#include

#define ll long long

#define pi acos(-1)

#define mes(x,y) memset(x,y,sizeof(x))

#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)

using namespace std;

const ll inf =

2e9+10;

const ll mod =

1e10+7

;const ll maxn =

2e10+10

;ll n, m, i, j, t, w, sum;

ll a[31]

, flagb[31]

, po[

1785];

void

buildtree

(ll th, ll bea, ll ena, ll beb, ll enb)

//根據中序遍歷確定有左子樹

if(flagb[po[th]

]!= enb)

//根據中序遍歷確定有右子樹

}vectorv[31]

;void

frontbianli

(ll th, ll step)

intmain()

}

#include

#define ll long long

#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)

using namespace std;

const ll maxn =

1e12+10

;ll n, m, i, j, k, t, w, x, y, z, in, flag, cou, sum, maxn, minn;

string s, s1, s2;

const ll inf =

1e9+7;

ll* buildtree ( ll hl, ll hr, ll *hx, ll zl, ll *mm, ll *re )

intmain()

;for

( cin >> n, i =

0; i < n; i++

) cin >> hx[i]

;for

( i =

0; i < n; i++

) cin >> j, mm[j]

= i;

for( cout <<

"preorder:"

, buildtree (

0, n -

1, hx,

0, mm, re )

, i =

0; i < n; i++

) cout <<

" "<< re[i]

;return0;

}

7 3 樹的遍歷 25分

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。...

7 3 樹的同構(25 分)

給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。圖1 圖2現給定兩棵樹,請你判斷它們是否是同構的。輸入給出2棵二叉樹樹的資訊。對...

7 3 樹的同構 (25 分)

給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。圖1 圖2現給定兩棵樹,請你判斷它們是否是同構的。輸入給出2棵二叉樹樹的資訊。對...