How to implement a Complete Binary Tree using recursion without comparing the value of the node?

后端 未结 5 1066
甜味超标
甜味超标 2021-01-17 06:47
public void recurInsert(BinaryTree.Node root, BinaryTree.Node newNode, int height) {
    if (newNode == null) {
        System.out.println(\"InsertNode is empty, ple         


        
5条回答
  •  温柔的废话
    2021-01-17 07:17

    //Node---
    public class BinaryTreeNode {
        private T data;
        private BinaryTreeNode leftNode;
        private BinaryTreeNode rightNode;
    
    public BinaryTreeNode(T data) {
        this.data = data;
        this.leftNode = null;
        this.rightNode = null;
    }
    
    public T getData() {
        return data;
    }
    
    public void setData(T data) {
        this.data = data;
    }
    
    public BinaryTreeNode getLeftNode() {
        return leftNode;
    }
    
    public void setLeftNode(BinaryTreeNode leftNode) {
        this.leftNode = leftNode;
    }
    
    public BinaryTreeNode getRightNode() {
        return rightNode;
    }
    
    public void setRightNode(BinaryTreeNode rightNode) {
        this.rightNode = rightNode;
    }
    }
    
    //Binary Tree---
    public class BinaryTree {
    private BinaryTreeNode rootNode;
    
    public BinaryTreeNode getRootNode() {
        return rootNode;
    }
    
    public void setRootNode(BinaryTreeNode rootNode) {
        this.rootNode = rootNode;
    }
    
    public void insert(T data){
        this.setRootNode(insert(this.getRootNode(), data));
    }
    
    private BinaryTreeNode insert(BinaryTreeNode node, T data){
        if(node == null){
            node = new BinaryTreeNode<>(data);
        }else{
            if(node.getLeftNode() == null){
                node.setLeftNode(insert(node.getLeftNode(), data));
            }else if(node.getRightNode() == null){
                node.setRightNode(insert(node.getRightNode(), data));
            } else{
                if(node.getLeftNode().getLeftNode() == null || node.getLeftNode().getRightNode() == null){
                    insert(node.getLeftNode(), data);
                }else if(node.getRightNode().getLeftNode() == null || node.getRightNode().getRightNode() == null){
                    insert(node.getRightNode(), data);
                }else{
                    insert(node.getLeftNode(), data);
                }
            }
        }
        return node;
    }
    }
    

提交回复
热议问题