三种情况
- Case 1
删除的节点没有子节点(即该节点为叶节点)
操作:直接delete
- Case 2
删除的节点下有一个子节点
操作:用左/右子树代替该节点
- Case 3
删除的节点有两个子节点
搜索二叉树有2个基本性质可以用于判断:
- 左子树中的所有值都小于等于根节点的值,而右子树中的数据都大于根节点的值。
- 二叉搜索树的中序输出后数据按照非递减顺序排列
对于第一个性质,假设根节点数据为7,那么左子树最大不能超过7,而右子树都大于7。
所以我们可以在函数中增加参数minValue
和maxValue
,用来记录此子树中数据的范围。
Tree traversal is a process of visiting each node in the tree exactly once in some order.
树的遍历有2种方式,Breadth-first(广度优先)
和Depth-first(深度优先)
。
树(Tree)作为一种数据结构,具有一种递归性。一个树可以看作是由根节点(root)以及若干子树构成,而子树又可以继续向下分成根和子树,因此树具有递归性。
二叉树(binary tree)
是树中的一种,它满足每个节点都有要么2个要么0个子节点的特性。
二叉搜索树(binary search tree)
满足左侧子树中储存的值都小于等于root,而右侧子树上的值都大于root,并且递归满足。