【问题标题】:Is it possible to link multiple nodes to a single node?是否可以将多个节点链接到单个节点?
【发布时间】:2018-03-20 02:22:57
【问题描述】:

我正在尝试基于链表创建树结构。由于链表只能直接指向下一个节点(对于单链表),我想修改一下链表的概念。是否可以从多个节点指向一个节点?

这是一张正在绘制的图片

【问题讨论】:

  • java 没有指针
  • 嗯我想我应该使用不同的方法而不是指向一个点
  • 你说的是发明一棵吗?

标签: java pointers tree


【解决方案1】:

我认为以下方法可行:

class Node {
    Node sibling;
    Node child;
    Object item;
}

sibling 将指向并行级别的下一个节点,child 指向较低级别的节点。

【讨论】:

  • 是的,我想过这个,但是我如何在编码中将兄弟节点指向父节点?自从我有多个后代以来。我尝试使用 List>,并递归地使内部节点成为 List>,直到它到达根或叶。顺便说一句,我正在为这个使用后订单输入法
  • 这也使得移除节点变得困难。
【解决方案2】:

请看下面我的实现:

package treeTest;

public class Node {
private Node left;
private Node right;
private String data;
public Node(String data) {
    this.data = data;
    left = null;
    right = null;
}

public Node getLeft() {
    return left;
}

public void setLeft(Node left) {
    this.left = left;
}

public Node getRight() {
    return right;
}

public void setRight(Node right) {
    this.right = right;
}

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}

}

package treeTest;

public class Tree {
private Node root;

public Tree() {
    root = null;
}

public void insert(String data) {
    root = insert(root, data);
}

private Node insert(Node node, String data) {
    if(node == null) {
        // Then create tree
        node = new Node(data);
    } else {
        if(data.compareTo(node.getData()) <= 0) {
            node.setLeft( insert(node.getLeft(), data));
        } else {
            node.setRight(insert(node.getRight(), data));
        }
    }
    return node;
}

}

package treeTest;

import java.util.Scanner;

public class TestTree {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Tree tree = new Tree();

    tree.insert("Hurricane");
    // Second level
    tree.insert("Cat1");
    tree.insert("Cat2");
    tree.insert("Cat3");
}

}

更多详情请查看Java Program to Implement a Binary Search Tree using Linked Lists

【讨论】:

  • 好的,我明白了这个概念,但是二叉树节点如何为具有三个孩子的父节点工作?
  • 根据定义,二叉树是一种树数据结构,最多有两个孩子(或节点)。 Definition。但是如果你想要一棵有 3 个孩子的树,你可以添加另一个节点并可能将其命名为中间
  • 但我正在构建的是拥有无限数量的孩子。例如,用户可能希望在一个父母中有 10 个孩子。所以到目前为止定义子节点的数量并不能解决我的问题。谢谢你的评论。
猜你喜欢
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
相关资源
最近更新 更多