加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

普通有序树转二叉树

(2010-06-11 21:35:02)
标签:

二叉树

结点

水平线

左子树

it

分类: 继电器

普通有序树转二叉树

 

2008年上半年的27题,普通有序树的后序序列对应其相应的二叉树的中序遍历序列。

具体的将有序树转化为二叉树的方法如下:

 

普通树为有序树T,将其转化成二叉树T’的规则如下:

⑴T中的结点与T’中的结点一一对应,即T中每个结点的序号和值在T’中保持不变;

⑵T中某结点v的第一个儿子结点为v1,则在T’中v1为对应结点v的左儿子结点;

⑶T中结点v的儿子序列,在T’中被依次链接成一条开始于v1的右链;

由上述转化规则可以看出,一棵有序树转化成二叉树的根结点是没有右子树的,并且除保留每个结点的最左分支外,其余分支应去掉,然后从最左的儿子开始沿右儿子方向依次链接该结点的全部儿子。

还有一种比较有趣的方法

1)在树的所有兄弟结点上添加一条水平线

2)删去所有除左子树之外的所有父到子之间的树枝或者说成删去父结点到除最左陔子之外的所有其它孩子之间的树枝。

3)将添加的水平线顺时间转动45度。

我简单的画一下图刚开始是

   0

/ | \

0 0 0

增加上水平线

0

/ | \

0-0-0

删除父到子除最左之外的所有树枝

    0

/

0-0-0

再将他连线转动45度成为最终的二叉树为

     0

   /

0

\

    0

       \

         0

转动后将是这个样子

在我自己理解起来最简单的就是

在任一个结点上除了左子树外,左子树的右边的兄弟将全部连接成为左子树的右子树举例如

二叉树

               A

                   \

                D

应上面我说的除左子树外,左子树的右兄弟都连接成他的子。成为A为根,B是他的左子不变,C成为B的右子树D又连成C的右子树,结果为

          A

        

       B

         \

          C

            \

             D

完成!!用这文本来画二叉树还真有点费劲!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有