这两周我们主要学到了有关树和二叉树的用法,掌握了二叉树的遍历的基本操作。
1.树的定义及特点
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(1) 每个节点有零个或多个子节点;
(2) 没有父节点的节点称为根节点;
(3) 每一个非根节点有且只有一个父节点;
(4) 除了根节点外,每个子节点可以分为多个不相交的子树。
2.关于树的官方语言
结点的度:结点拥有的子树的数目。
叶子:度为零的结点。
分支结点:度不为零的结点。
树的度:树中结点的最大的度。
层次:根结点的层次为1,其余结点的层次等于该结点的双亲结点的层次加1。
树的高度:树中结点的最大层次。
无序树:如果树中结点的各子树之间的次序是不重要的,可以交换位置。
有序树:如果树中结点的各子树之间的次序是重要的, 不可以交换位置。
森林:0个或多个不相交的树组成。对森林加上一个根,森林即成为树;删去根,树即成为森林。
3.二叉树的遍历
几乎所有操作建立在遍历的基础上,利用递归完成二叉树前(根)序,中(根)序,后(根)序遍历。
(1)先序遍历
void PreOrderTraverse(BiTree T) { If( T )//若二叉树非空 { cout<<T->data;//访问根结点 PreOrderTraverse( T->lchild );//先序遍历左子树 PreOrderTraverse( T->rchild );//先序遍历左子树 } //先序
先序
(2)中序遍历
void InOrderTraverse(BiTree T) { If( T )//若二叉树非空 { InOrderTraverse( T->lchild );//中序遍历左子树 cout<<T->data;//访问根结点 InOrderTraverse( T->rchild );//中序遍历左子树 } //中序
中序
(3)后序遍历
void PostOrderTraverse(BiTree T) { If(T)//若二叉树非空 { PostOrderTraverse( T->lchild );//后序遍历左子树 PostOrderTraverse( T->rchild );//后序遍历左子树 cout<<T->data;//访问根结点 } //后序
后序
看代码的能力提升了,但打代码的能力依旧在一个较低的水平。随着代码打的越来越多,会更熟练的。
原文地址:https://www.cnblogs.com/chenjianyuan/p/10810586.html
时间: 2024-10-31 07:05:06