c語言多叉樹轉二叉樹

2021-07-25 02:59:52 字數 1054 閱讀 3557

c語言練手.多叉樹轉二叉樹

原理: 二叉樹節點的左子樹為對應多叉樹節點的第乙個孩子,右子樹為多叉樹中它的右兄弟,以此類推

#include #include #define m 5  /* 多叉樹最大子數量為5 */

typedef struct mtree_node

mtree_node; /* 多叉樹結構 */

typedef struct btree_node

btree_node; /* 二叉樹結構 */

static int to_btree(struct mtree_node *pmnode, struct btree_node *pbroot)

btree_node *pbnode = (btree_node *)malloc(sizeof(btree_node));

pbroot->offspring = pbnode;

to_btree(pmnode->subtree[0],pbnode);

i = 1;

ptmep = pbnode;

while (i < m && pmnode->subtree[i] != null)

ptmep->sibling = null;

return 0;

}static int btree_print(btree_node *proot)

if (pnode->sibling != null)

free(proot);

return 0;

}int main (int args, char *argv)

}

if (mtree == null)

btree = (btree_node *)malloc(sizeof(btree_node));

/* 可將任意多叉樹轉換成二叉樹,引數為多叉樹和二叉樹的根節點 */

to_btree(mtree,btree);

btree_print(btree); /* 前序遍歷列印二叉樹,測試用 */

return 0;

}

多叉樹轉二叉樹

多叉樹的根結點為二叉樹的根,多叉樹的結點的第乙個兒子變成二叉樹對應結點的左孩子,多叉樹的結點的右兄弟變成二叉樹種該結點的右孩子。如下 c語言 01 include 02 include 03 include 04 include 0506 typedef struct treenode treeno...

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

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

二叉樹 二叉樹

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