繁体   English   中英

Java二叉树主要方法

[英]Java Binary Tree Main Method

我有一个班级节点

class Node{
    int val; 
    Node parent; 
    Node left; 
    Node right; 

    public Node (int val){
        this.val = val;
    }
}

我有几种方法:

 public class Tree{
 public Node root = null;

 void insertNodeSorted(Node x, Node tree) {
    if (x.val < tree.val) {
        if (tree.left == null) {
            tree.left = x;
        }
        else
            insertNodeSorted(x, tree.left);
    }
    else {
        if (tree.right == null) {
            tree.right = x;
        }
        else
            insertNodeSorted(x, tree.right);
    }
} // end insertNodeSorted


void deleteNodeSorted(Node x) {
    if (root == null)
        return;
    else
        root = deleteNodeSorted(x, root);
}
Node deleteNodeSorted(Node x, Node tree) {
    if (x.val < tree.val)
        tree.left = deleteNodeSorted(x, tree.left);
    else if (x.val > tree.val)
        tree.right = deleteNodeSorted(x, tree.right);
    else
        tree = replaceNodeSorted(tree);
    return tree;
} // end deleteNodeSorted

// Additional Method
Node replaceNodeSorted(Node tree) {
    if (tree.right == null)
        tree = tree.left;
    else if (tree.left == null)
        tree = tree.right;
    else
        tree.right = findReplacement(tree.right, tree);
    return tree;
} // end replaceNodeSorted
Node findReplacement(Node tree, Node replace) {
    if (tree.left != null)
        tree.left = findReplacement(tree.left, replace);
    else {
        replace.val = tree.val;
        tree = tree.right;
    }
    return tree;
} // end findReplacement

而且我想编译Tree,但是我不知道我到底需要在main方法中编写什么。

public static void main(String[] args){

  Tree t = new Tree();
  t.insertNodeSorted();

为了打印树,我必须在括号中写些什么? (我知道我仍然必须在方法中添加System.out.println(val);。)

您定义了一个包含root的变量,因此不必为insertNodeSorted方法传递参数tree 您可以随时使用root节点。

添加仅采用一个参数的方法。

public void insertNodeSorted(Node x) {
    if (root == null) {    
        root = x;
        return;
    }
    insertNodeSorted(x, root);
} 

使用两个参数将另一个方法定义为private

 private void insertNodeSorted(Node x, Node tree) {
     ...
 }

现在,您可以按如下所示插入元素:

Tree t = new Tree();
t.insertNodeSorted(new Node(1));
t.insertNodeSorted(new Node(134));
t.insertNodeSorted(new Node(13));
t.insertNodeSorted(new Node(4));
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM