大话数据结构-程杰著 数据结构树的学习(部分)

转载 2015年11月20日 17:21:08

 

二叉树的遍历

1.      二叉树的遍历方法:

(图前序遍历)

可以利用栈的思想,将遍历的次序依次放入到栈中,如前序遍历(将根放入栈中,根节点出栈,打印根节点,然后再将右子节点、左子节点依次放入,然后再左子节点出栈进行打印,左子节点的右左节点在次入栈;根节点的所有左子树节点全部出栈后在执行根节点的右子树出栈进栈操作。)

这里的前中后序遍历,是以根节点为参考点来讲的,先根节点的为前序,先左节点根节点右节点的为中序,后续则是左右根。(只针对于前序遍历)

或者也可以说是遍历左、右节点,根节点放在最前面(左前序遍历和右前序遍历的前面)则是前序遍历;根节点处理放在(左中序遍历和右中序遍历的中间)则是中序遍历;根节点处理放在(左后续遍历和右后续遍历的后面)则是后续遍历。

(1)      前序遍历

前序遍历规则:如果二叉树为空,则空操作返回;否则先访问根节点,然后前序遍历左子树,再遍历右子树,上图的顺序为前序遍历的次序:ABDGHCEIF

Void preSequence(Trees tree){

    If tree is nullreturn ;

    Else {

             System.out.print(tree.node+””);

             preSequence(tree.leftChild);

             preSequence(tree.rightChild);

}

}


(2)      中序遍历

规则如果树为空,则返回;否则从根节点开始(并不是先访问根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。GDHBAEICF

Void midSequence(Tree tree){

    If tree is nullreturn ;

    Else{

         midSequence(tree.left);

         System.out.println(tree.node);

         midSequence(tree.right);

}

}


(3)      后序遍历

规则是如果树为空,则操作返回;否则从左到右先叶子后结点的方式遍历访问左右子树:上图的顺序是:GHDBIEFCA.

Void postSequence(Tree tree){//tree作为当前的借点

    If tree is nullreturn;

    Else {

             postSequence(tree.left);

             postSequence(tree.right);

             System.out.println(tree.node);

}

}


(4)      层次遍历

规则:如果树是空的,则返回;否则从树的第一层,也就是根节点开始访问,从上而下逐层遍历,在同一层中安从左到右对节点顺序访问。上图:ABCDEFGHI

Void hierchSequence(Tree tree){

    If tree is nullreturn ;

Else{

         hierchSequence(tree.left);

         hierchSequence(tree.right);

}

   

}

 

赫夫曼树及其应用:

这里提及到了学生成绩按照60,70,80,90划分不及格,及格,中等,良好,优秀的登记,如果按照

If(score<60){}

Else if (score<70){}

Else if(score<80){}

Else if(score<90){}

{}

这样操作,如果数据量很大时,可能其效率会很低。想想有什么办法可以改变那?

我们知道一般从统计学来讲,成绩的分布应该是中间多,两头少的分布,如正太分布等,这样比如学生成绩在中等、良好的情况占大多数,这是我们可以以中等或者良好的分数来区分,如下图:


感觉在比较上应该是进行了优化的了。这种变换,其实和霍夫曼的定义吻合。

霍夫曼树,带权路径长度最小的二叉树。(最优二叉树)

路径长度为树中一个结点到另一个结点的分支构成了两个结点质检的路径,路径上的分支数目称为路径长度。

树的路径长度就是从树根到每一结点的路径长度之和。

《大话数据结构》的笔记(作者: 程杰)

大话数据结构 程杰 第1章 数据结构绪论 2015-08-11 数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合。 1.3 数据结构起源 2015-08-12 程序设计=数...
  • CHIHUN_LOVE
  • CHIHUN_LOVE
  • 2015年09月30日 13:51
  • 1890

《大话数据结构》-程杰 读书笔记

认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。可见,数据结构在程序设计当中占据了重要的地位。程序设计=数据结构+算法 要你相信自己一定可以学得会、学得好,既...
  • xuzhouhhy
  • xuzhouhhy
  • 2017年08月15日 22:01
  • 161

设计模式 总结 根据《大话设计模式》程杰 整理

1.简单工厂模式 用一个单独的类来创造实例。 2. 策略模式(Strategy) 定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。  主...
  • ChallenChenZhiPeng
  • ChallenChenZhiPeng
  • 2013年01月01日 17:04
  • 1316

大话数据结构--你数据结构怎么学的?

于是就明白自己基础太薄弱,准备补充计算机科学基础知识。好友Yang推荐我读《大话数据结构》,对于我这种没有学过数据结构的“小白”而言,再合适不过。...
  • jiangzhouyue
  • jiangzhouyue
  • 2017年06月14日 11:16
  • 576

大话设计模式_程杰(奋斗的小鸟)_PDF 电子书

下载地址:http://pan.baidu.com/share/link?shareid=686567980&uk=721744522 内容简介   本书通篇都是以情景对话的形式,用多个小...
  • tjoy2005
  • tjoy2005
  • 2013年10月07日 17:51
  • 2959

大话数据结构——树

一、树的定义**树(Tree)是n(n>=0)个结点的有限集。**n=0又称为空树。在任意一课非空的树中:(1)有且仅有一个特定的称为跟(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)...
  • u013159040
  • u013159040
  • 2016年06月13日 17:51
  • 6560

大话数据结构读书笔记系列(六)树<上篇>

第6章 树 6.2 树的定义 之前我们一直在谈的是一对一的线性结构,可现实中,还有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树”。 树(Tree)是n(n≥0)个结点的有限集...
  • u010194538
  • u010194538
  • 2016年04月21日 20:48
  • 1417

大话数据结构—平衡二叉树(AVL树)

平衡二叉树(Self-Balancing Binary Search Tree/Height-Balanced Binary Search Tree),是一种二叉排序树,其中每一个节点的左子树和右子树...
  • wtyvhreal
  • wtyvhreal
  • 2015年06月09日 22:14
  • 1187

大话数据结构小结1

由于图片看不了,大家可以看这个百度云笔记,我看完大话数据结构整理的,里面有些内容我还不太明白,等过段时间还需要仔细回顾回顾。点击打开链接 一.数据及数据结构的基本概念 数据结构...
  • aiyingwo
  • aiyingwo
  • 2015年11月19日 11:02
  • 732

大话数据结构——图

图(Graph)是由定点的又穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。一、各种图的定义图按是否有方向分可分为有向图和无向...
  • u013159040
  • u013159040
  • 2016年06月14日 16:31
  • 664
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大话数据结构-程杰著 数据结构树的学习(部分)
举报原因:
原因补充:

(最多只允许输入30个字)