多叉樹轉二叉樹

2021-05-08 01:37:37 字數 1665 閱讀 4461

多叉樹的根結點為二叉樹的根,多叉樹的結點的第乙個兒子變成二叉樹對應結點的左孩子,多叉樹的結點的右兄弟變成二叉樹種該結點的右孩子。**如下:

c語言:

01#include

02#include

03#include

04#include

0506

typedef

struct

treenode

treenode_t; 11

12typedef

struct

binarytreenode

binarytreenode_t; 17

18binarytreenode_t

*tobinarytree(

treenode_t

*root)22

23binarytreenode_t

*binaryroot

= ( binarytreenode_t

*) malloc(

sizeof(

binarytreenode_t));   24

binaryroot

->

value

=root

->

value;   25

binaryroot

->

leftchild

=tobinarytree(

root

->

child[0

]);26

27binarytreenode_t

*brother

=binaryroot

->

leftchild; 28

inti;  29

for( i=

1; i

<

root

->

child_count;

i++)33

return

binaryroot;   34

}3536treenode_t

*tn;

/*多叉樹的根*/

37binarytreenode_t

* bn;

/*二叉樹的根*/

3839

intmain (

intargc

,char

*argv)40

7475

tn->

value

='a'; 76

tn->

child_count=3;

77memset( t,

0,sizeof(

t)); 78

t[0]

=tmp; 79

t[1]

=tmp1; 80

t[2]

=tmp2; 81

memcpy(

tn->

child,t

,sizeof(

t)); 82

83/*轉化為二叉樹*/

84     bn

=tobinarytree(

tn); 85

86return(

0); 87

}結果就懶得寫輸出了,debug下看bn這個指標就ok了。

ps:**用的**發芽網http://fayaa.com/code轉的html,還不錯。

c語言多叉樹轉二叉樹

c語言練手.多叉樹轉二叉樹 原理 二叉樹節點的左子樹為對應多叉樹節點的第乙個孩子,右子樹為多叉樹中它的右兄弟,以此類推 include include define m 5 多叉樹最大子數量為5 typedef struct mtree node mtree node 多叉樹結構 typedef s...

樹形dp技巧,多叉樹轉二叉樹

今天覆習樹形dp時發現一道比較古老的題,叫選課,是樹形dp的一道基礎題,也是多叉樹轉二叉樹應用的模版題 多叉樹轉二叉樹的應用非常廣泛,因為如果乙個節點的兒子太多,乙個乙個存下來不方便去查詢,並且會增加複雜度,但是這裡我們就有乙個o n 的複雜度的方法把多叉樹轉換為二叉樹,轉換成二叉樹後就更方便查詢,...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...