Java实现链式存储的二叉查找树(递归方法)(3)

//在二叉查找树中插入一个数据域为data的结点,新插入的结点一定是某个叶子节点
    public TreeNode<Integer> insertNode(TreeNode<Integer> node, Integer data){
        TreeNode<Integer> newNode = new TreeNode<Integer>(data,null,null);
        TreeNode<Integer> tmpNode = node;  //遍历节点
        TreeNode<Integer> pnode = null;  //记录当前节点的父节点   
       
        if(node == null){  //原树为空,新插入的记录为根节点
            node = newNode;   
            return node;
        }
        while(tmpNode != null){
            pnode = tmpNode;
            if(tmpNode.getData() == data){ //树中存在相同关键字的结点,什么也不做
                return node;
            }else{
                if(tmpNode.getData() > data){ //根节点>插入数据,插入到左子树中
                    tmpNode = tmpNode.getLchild();
                }else{ //根节点<插入数据,插入到右子树中
                    tmpNode = tmpNode.getRchild();
                }
            }
        }
        if(pnode.getData() > data){
            pnode.setLchild(newNode);
        }else{
            pnode.setRchild(newNode);
        }   
        return node;
    }

2. 二叉查找树的中序遍历:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5397f1f355d485222061221e30374acb.html