开发者社区> 问答> 正文

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

a123456678 2016-06-06 11:17:21 1156

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

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

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

C语言
分享到
取消 提交回答
全部回答(4)
  • 一生有你llx
    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;
    }

    }
    }

    0 0
  • xumaojun
    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;
        }
    }

    }

    0 0
  • nothingfinal
    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;
        }
    }

    }

    0 0
  • a123456678
    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;
                }
            }
        }
    
    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题