二叉树相关习题

这篇博客探讨了如何使用递归函数来解决二叉搜索树(BST)中的常见问题。首先,展示了递归实现的在BST中查找特定key值的方法。接着,详细解释了通过中序遍历打印BST中位于min和max值之间的所有节点。这些操作都是基于BST的特性,保证了顺序的正确性。
摘要由CSDN通过智能技术生成

6、利用递归函数返回一棵二叉树的高度:
14.用递归方式,在二叉搜索树中查找key值

 bool search( BinaryTree<T>* root, T k) {
	if( root == NULL)
		return false;
	if (root->value == k)
		return true;
	return search( root->lChild) || search( root -> 											rChild);
}

16.打印出BST中介于min和max间的所以节点值
分析:属于查找问题,三种遍历方式。由于需要按照顺序打印出介于两个值之间的结点,所以中序遍历保证顺序,选用中序。

// 这里的小于号,大于号,等于号应当是重载过的,可以直接比大小,以下直接使用。
Void printRange(BST<T>* root, min, max) {
	stack<BST<T>  > myStack;
	BST<T>* pointer = root;
	while( !myStack.empty() ) {
		if(pointer->value < min)   
 			pointer = pointer -> rChild;
		if(pointer-> value > max) {
			pointer = pointer -> lChild;
		}	
		if(  min < pointer->value  && pointer->value < max) {
			myStack.push(pointer);
			pointer = pointer -> lChild;
		}
		if( min = pointer -> value) {
			cout << pointer -> value;
			pointer = pointer -> rChild;
		}
		if ( max = pointer -> value ) {
			myStack.push(pointer); // 这里注意,出栈时,不用向右搜索了,因此,下面出栈时,还需检查 pointer -> value 是否等于 max。一切为了少访问结点。
			pointer = pointer -> lChild;
		}
		if  ( pointer == NULL ) {
			pointer = myStack.top();
			myStack.pop();
			cout << pointer -> value;
			if( pointer -> value != max)
				pointer = pointer -> rChild;
			else  break; // 如果查到 value == max, 就是该结束的时候了。
		}					

	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值