当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

数据构造学习(C++)之二叉树[VC/C++编程]

赞助商链接



  本文“数据构造学习(C++)之二叉树[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

因为实际世界中存在这“树”这种构造——族谱、等级制度、目录分类等等,而为了研究这类问题,必须可以将树储存,而若何储存将取决于所需求的操作.这里有个问题,能否答应存在空树.有些书认为树都是非空的,因为树表示的是一种实际构造,而0不是自然数;我用过的教科书都是说可以有空树,当然是为了和二叉树统一.这个没有什么原则上的差别,反正就是一种习惯.

二叉树

二叉树可以说是人们假想的一个模子,因此,答应有空的二叉树是无争议的.二叉树是有序的,左边有一个孩子和右边有一个的二叉树是差别的两棵树.做这个规定,是因为人们赋予了左孩子和右孩子差别的意义,在二叉树的各种利用中,你将会清楚的看到.下面只讲授链式构造.看各种讲数据构造的书,你会发现一个风趣的现象:在二叉树这里,基本操作有计算树高、各种遍历,就是没有插入、删除——那树是怎么成立起来的?其实这很好理解,关于非线性的树构造,插入删除操作不在一定的法例规定下,是毫无意义的.因此,只有在具体的利用中,才会有插入删除操作.

节点构造

数据域、左指针、右指针必定是必须的.除非很罕用到节点的双亲,大概是资源慌张,倡议附加一个双亲指针,这将会给很多算法带来便利,特别是在这个“空间换时间”的时代.

template <class T>
struct BTNode
{
BTNode(T data = T(), BTNode<T>* left = NULL, BTNode<T>* right = NULL, BTNode<T>* parent = NULL)
: data(data), left(left), right(right), parent(parent) {}
BTNode<T> *left, *right, *parent;
T data;
};

基本的二叉树类


  以上是“数据构造学习(C++)之二叉树[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Microsoft SQL Server 7.0数据库设置与数据构造
  • <b>Java底子:Util包下常用的数据构造介绍</b>
  • <b>数据构造学习(C++)之单链表</b>
  • <b>数据构造学习(C++)之双向链表</b>
  • <b>数据构造学习(C++)之稀疏矩阵</b>
  • 数据构造学习(C++)之栈和行列
  • <b>数据构造学习(C++)之递归</b>
  • 数据构造学习(C++)之排序
  • 数据构造学习(C++)之二叉树
  • <b>数据构造学习(C++)之图</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .