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的所在子樹...