-
在实际生产中,一棵二叉搜索树的平均深度是log(N),所以通常是递归的编写二叉树的操作代码,不需要太担心爆栈的问题。
-
对二叉树的所有操作,无非就是从根节点、左子树、右子树这三者中入手,分析基本的、可能的情况后,再递归的编写相应的操作即可。
-
我们的重点放在Insert() 操作和**Delete()**操作中。
Insert()
首先,我们需要先定义Insert()函数,它的作用是将一个新元素添加到BST中,然后返回插入新元素后的BST。
- 如何将新元素插入到一棵BST中。我们从根节点、左子树、右子树这三者中入手。
- 根节点:根节点为空(为空树),直接将该新元素添加到树中。
- 左子树:比根节点小,添加到左子树中。
- 右子树:比根节点大,添加到右子树中。
SearchTree
Insert( ElementType X , SearchTree T ){
if( NULL==T ){
T=( strcut TreeNode* )malloc( sizeof( struct TreeNode ) );
assert