在二叉排序树中,找所有结点值小于 x 中的最大结点

题目描述

找二叉排序树中,结点值小于 x 且是所有小于 x 的结点中最大的结点。
其中,二叉排序树定义如下:

typedef struct BTNode {
	int val;
	struct BTNode *lchild;
	struct BTNode *rchild;
} BSTNode, *BiTree;

算法思路

  • max记录当前遍历到的比x小的最大值,使用bt遍历二叉排序树;
  • bt->val >= x 的结点的左子树中查找;在 bt->val < x 的结点的右子树中查找;直到该结点为叶子结点。
int FindMax(BiTree bt, int x) {
	int max = INT_MIN;
	
	while(bt != NULL) {
		if(bt->val >= x)
			bt = bt->lchild;
		else {
			max = bt->val;
			bt = bt->rchild;
		}
	}
	
	return max;
}
posted @ 2020-07-04 18:33  0202zc  阅读(512)  评论(0编辑  收藏  举报