c 實現二叉樹判別

2021-09-29 01:39:00 字數 2201 閱讀 5565

給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是「同構」的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a、b、g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。

圖1圖2

現給定兩棵樹,請你判斷它們是否是同構的。

輸入格式:

輸入給出2棵二叉樹樹的資訊。對於每棵樹,首先在一行中給出乙個非負整數n (≤10),即該樹的結點數(此時假設結點從0到n−1編號);隨後n行,第i行對應編號第i個結點,給出該結點中儲存的1個英文大寫字母、其左孩子結點的編號、右孩子結點的編號。如果孩子結點為空,則在相應位置上給出「-」。給出的資料間用乙個空格分隔。注意:題目保證每個結點中儲存的字母是不同的。

輸出格式:

如果兩棵樹是同構的,輸出「yes」,否則輸出「no」。

輸入樣例1(對應圖1):

8a 1 2

b 3 4

c 5 -

d - -

e 6 -

g 7 -

f - -

h - -

8g - 4

b 7 6

f - -

a 5 1

h - -

c 0 -

d - -

e 2 -

輸出樣例1:

yes輸入樣例2(對應圖2):

8b 5 7

f - -

a 0 3

c 6 -

h - -

d - -

g 4 -

e 1 -

8d 6 -

b 5 -

e - -

h - -

c 0 2

g - 3

f - -

a 1 4

輸出樣例2:

no

#include

using

namespace std;

//用結構陣列表示二叉樹

struct streenode

t1[10

],t2[10]

;int

biuldtree

(struct streenode t)

;int

isthesamestruct

(int

,int);

intmain()

intbiuldtree

(struct streenode t)

else t[i]

.left =-1

;//左邊沒兒子,就把左兒子設為-1`在這裡插入**片`

if(cr !=

'-')

else t[i]

.right =-1

;}}else

return-1

;//與根節點初始化為-1的目的一樣,當輸入空樹的時候保證根節點編號為-1,兩者寫其中乙個就行。

for(

int i =

0; i < n;i++

)//是別的兒子的check都是1.還是0的那個就是根節點

}return root;

//返回根節點編號

}int

isthesamestruct

(int r1,

int r2)

if(t1[r1]

.left==-1

&&t2[r2]

.left==-1

)//兩棵樹的根節點左兒子都是空的if(

(t1[r1]

.left !=-1

&& t2[r2]

.left !=-1

)&&(t1[t1[r1]

.left]

.contents == t2[t2[r2]

.left]

.contents)

)//兩棵樹的做兒子不同時為空並且左兒子的內容相等

else

return

isthesamestruct

(t1[r1]

.right, t2[r2]

.left)

&&isthesamestruct

(t1[r1]

.left, t2[r2]

.right)

;//兩棵樹的左兒子不同時為空且左兒子內容不相等,那麼有可能是

//左邊等於右邊,右邊等於左邊

}

判別二叉樹T是否為完全二叉樹

判別二叉樹t是否為完全二叉樹 定義 深度為k且含有n個結點的二叉樹,如果其每個結點都與深度為k的滿二叉樹中的編號從1到n的結點一一對應,則成為完全二叉樹。判斷條件 1.左 右子樹都是完全二叉樹 2.左子樹的高度和右子樹一樣或大1 3.若左子樹比右子樹高度大1,則右子樹必須是滿的 節點數等於2 高度 ...

C 實現二叉樹

其中的 linkstack.h 和 linkqueue 分別在 以下兩篇博文裡 linkstack linkqueue include include linkstack.h include linkqueue.h using namespace std 定義節點 templatestruct no...

二叉樹C 實現

最近整理原來的一些 腦子有點不好使,還是記下來吧。binary tree.h,遍歷包含了遞迴和非遞迴兩種,層次遍歷 ifndef binary tree h define binary tree h templatestruct binode templateclass bitree endif b...