开发者社区> 问答> 正文

用C语言实现二叉排序树查找小于关键字key的最大节点的函数

用C语言实现。
数据结构如下:

typedef struct TreeNode
{
    int Key;
    struct TreeNode *LChlid,*RChlid;
}TreeNode;

以知二叉树有如下特点:左节点数值小于根节点,右节点数值大于根节点,既是一棵二叉排序树。
现在要求编写一个函数TreeNode Find(TreeNode root,int key),在二叉树中找到小于key的最大节点,如果能找到则直接返回该节点,如果不能,则返回NULL。要求Find函数不能调用其它函数,但可以递归调用自身。

展开
收起
a123456678 2016-06-06 11:17:21 3279 0
4 条回答
写回答
取消 提交回答
  • 专注物联网

    Node find(Node root,int Key){

    if(root == NULL)

    return NULL;

    if(root.val >= key){

    return find(root.left, key);

    }else{

    Node * tmp = find(root.right, key);
    if(tmp == NULL){
        return root;
    }else{
        return tmp;
    }

    }
    }

    2019-07-17 19:27:58
    赞同 展开评论 打赏
  • 乐于学习与分析

    Node find(Node root,int Key){

    if(root == NULL)
        return NULL;
    if(root.val >= key){
        return find(root.left, key);
    }else{
        Node * tmp = find(root.right, key);
        if(tmp == NULL){
            return root;
        }else{
            return tmp;
        }
    }

    }

    2019-07-17 19:27:58
    赞同 展开评论 打赏
  • 软件开发,安全加密

    Node find(Node root,int Key){

    if(root == NULL)
        return NULL;
    if(root.val >= key){
        return find(root.left, key);
    }else{
        Node * tmp = find(root.right, key);
        if(tmp == NULL){
            return root;
        }else{
            return tmp;
        }
    }

    }

    2019-07-17 19:27:58
    赞同 展开评论 打赏
  •  template<typename T>
        Node* find(Node* root,T Key){
            if(root == NULL)
                return NULL;
            if(root.val >= key){
                return find(root.left, key);
            }else{
                Node * tmp = find(root.right, key);
                if(tmp == NULL){
                    return root;
                }else{
                    return tmp;
                }
            }
        }
    
    2019-07-17 19:27:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载