我是靠谱客的博主 标致啤酒,最近开发中收集的这篇文章主要介绍将普通树转为二叉树,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

普通树转化为二叉树!

普通树转化为二叉树!

普通树转化为二叉树!

重要的事情说三遍(

 

最近在刷树形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

最后

以上就是标致啤酒为你收集整理的将普通树转为二叉树的全部内容,希望文章能够帮你解决将普通树转为二叉树所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部