我是靠谱客的博主 标致啤酒,这篇文章主要介绍将普通树转为二叉树,现在分享给大家,希望可以做个参考。

普通树转化为二叉树!

普通树转化为二叉树!

普通树转化为二叉树!

重要的事情说三遍(

 

最近在刷树形dp的题,而树形dp的某些特殊题目多依靠二叉树的结构写出状态转移方程,所以专门看看不得不说说的普通树(多叉树)转二叉树。

 

上图!(没图我说个jb

 

如图有一颗生长健康饱满有活力的树,但是仔细看看可以发现节点2有三个儿子,即这并不是我们想要的二叉树。

 

怎么办?

 

留长子:

 

剔除所有节点除大儿子以外的所有儿子


养兄弟:

每个无父亲节点指向长兄


至此,一颗多叉树顺利转变为我们想要的二叉树

下面附上源代码/pas:

var
i,x,y:longint;
b:array[0..100]of longint;
begin
readln(n,m);
fillchar(b,sizeof(b),0);
for i:=1 to n do
begin
readln(x,y);
if b[x]=0 then t[x].l:=y
else t[b[x]].r:=y;
b[x]:=y;
end;
end;


 

转载于:https://www.cnblogs.com/olahiuj/p/5781333.html

最后

以上就是标致啤酒最近收集整理的关于将普通树转为二叉树的全部内容,更多相关将普通树转为二叉树内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部