
要么二叉树没有根节点,是一棵空树。
要么二叉树由根节点、左子树、右子树组成,且左子树和右子树都是二叉树。
一般来说,二叉树使用链表来定义。二叉树每个结点有两条出边,因此指针域有两个——分别指向左子树和右子树的根结点地址,因此右把这种链表叫做二叉链表。其定义方式如下:
如果需要新建结点,可以使用下面的函数:

二叉树的常用操作有以下几个:二叉树的建立、二叉树结点的查找、修改、插入与删除。本节主要介绍查找、修改、插入、建树的通用思想。
查找操作是指在给定数据域的条件下,在二叉树中找到所有数据域为给定数据域的结点,并将它们的数据域修改为给定的数据域。
可以使用递归来完成查找修改操作。先判断当前结点是否是需要查找的结点:如果是,则对其进行修改操作;如果不是,则分别往该结点的左孩子和右孩子递归,直到当前结点为 NULL为止。代码如下:
二叉树结点的插入位置与二叉树本身的性质有关,下面代码以二叉排序树为例:
![]()
在上述代码中,函数参数使用了二维指针 **。这么做的原因是,在 insert函数中新建了结点,并把新结点的地址赋给了当层的 root。
那么,如何判断是否要加指针呢?一般来说,如果函数中需要新建结点,即对二叉树的结构做出修改,就需要加引用;如果只是修改当前已有结点的内容,或仅仅是遍历树,就不用加指针。
二叉树的创建其实就是二叉树结点的插入过程,比较常用的写法是把需要插入的数据存储在数组中,然后再将它们使用 insert函数一个个插入二叉树中,并最终返回根结点的指针 root。二叉排序树的遍历代码如下:
完整 C代码如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-62822-1.html
都是从资本市场中成为顶级的富豪的
来抱中国大腿就对了