查找二叉排序树
要求在二叉排序树中查找指定的关键字,并在查找过程中输出查找过程中历经的节点。
int SearchBST(BSTNode *bt,KeyType k) { if(bt==NULL) { return 0; } else if(bt->key==k) { printf("%d ",bt->key); return 1; } else if(bt->key<k) { printf("%d ",bt->key); return SearchBST(bt->rchild,k); } else if(bt->key>k) { printf("%d ",bt->key); return SearchBST(bt->lchild,k); } }
以第一个节点为根节点,后面比根节点大作为右子树,比根节点小作为左子树,依次下去。
对于一棵空的二叉树或者具有如下性质的二叉树:
1.若其左子树不为空,则左子树所有结点的值均小于根结点的值。
2.若其右子树不为空,则右子树所有结点的值均大于根结点的值。
3.其左右子树也是二叉排序树。