数据结构——树和二叉树

树的基本概念:

树形结构中一个结点可以有一个或多个直接后继。
定义:
树是n(n>=0)个结点的有限集合,一棵树满足以下两个条件:
1.当n=0时,称为空树。
2.当n>0时,有且仅有一个称为根的结点。除根结点外,其余结点分为m(m>=0)个互不相交的非空集T1,T2,…,Tm,这些集合中每一个都是一棵树,称为根的子树。

上学时时常会去鄙夷一件事,这些概念有什么作用?能做成实际的东西才最重要。实际工作里却意识到,这完全是一个错误。

在遥远的后来才逐渐的明白遣词用句可以准确的描述一件事物是多么重要的事情,当意思可以明确的传达,工作的协调也将变得简单,而对这些基础概念的准确了解,也将在后续于计算机相关的工作里拥有更加准确的理解,不论是组织,还是实际参与制造过程,准确的理解自己要做的事情,以及要让别人做的事情,都是重中之重。

树的相关术语:

结点的度:树上任一结点所拥有的子树的树木称为该节点的度。
叶子:度为0的结点称为叶子或终端结点。
树的度:一棵树中所有结点的度的最大值称为该树的度。
————————————————————————
子节点:一个结点的子树的根称为该结点的孩子。
父节点(双亲结点):子节点的前驱结点。
结点的层次:从根开始算起,根的层次为1,其余结点的层次为其双亲的层次加1.
————————————————————————
树的高度:一棵树中所有的结点层次输的最大值称为该树的高度或深度。
有序树:树中各结点的子树从左到右是有次序的,不能互换。
无序树:树中各结点的子树是无次序的,可以互换。

树的基本运算:

1.求根Root(T):求树T的根节点
2.求双亲Parent(T,X):求结点X在树T上的双亲结点;若X是树T的根或X不在T上,则结果为一特殊标志。
3.求孩子Child(T,X,i):求树T上结点X的第i个孩子结点;若X不在T上或X没有第i个孩子,则结果为一特殊标志。
4.建树Create(X, T 1 T_1 T1,…, T k T_k Tk),k>1:建立一颗以X为根,以 T 1 T_1 T1,…, T k T_k Tk为第1,…,k棵子树的树;
5.剪枝Delete(T,X,i):删除树T上结点X的第i棵子树;若T无第i棵子树,则为空操作;
6.遍历TraverseTree(T):遍历树,即访问树中每个结点,且每个结点仅被访问一次。

二叉树:

在树的基本概念基础上多了一条束缚:
任一结点都有两颗互不相交的左子树和右子树(其中任何一个都可以是空子树),并且其之间存在次序关系,所以左子树与右子树也分别称为该结点的左孩子和右孩子

二叉树的运算,与树的基本运算的不同之处:

1.求左孩子Lchild(BT,X)和求右孩子Rchild(BT,X):分别求出二叉树BT上结点X的左、右孩子;若X为BT的叶子或X不在BT上,运算结果为NULL。


——以下均为字面意思,且每个结点有且只被访问一次,若BT为空,则运算为空操作。
2.先序遍历
3.中序遍历
4.后序遍历
5.层次遍历

二叉树的性质

1.第i(i>=1)层上至多有 2 i − 1 2^{i-1} 2i1个结点。
2.深度为k(k>=1)的二叉树至多有 2 k − 1 2^{k-1} 2k1个结点。
3.对任何一颗二叉树,若度数为0的结点(叶结点)个数为 n 0 n_0 n0,度数为2的结点个数为 n 2 n_2 n2,则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值