Tree implementation in Java (root, parents and children)

前端 未结 8 2182
挽巷
挽巷 2020-11-30 20:05

I need to create a tree structure similar as the attached image in Java. I\'ve found some questions related to this one but I haven\'t found a convincing and well explained

8条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-30 20:52

    import java.util.ArrayList;
    import java.util.List;
    
    public class Node {
        private List> children = new ArrayList>();
        private Node parent = null;
        private T data = null;
    
        public Node(T data) {
            this.data = data;
        }
    
        public Node(T data, Node parent) {
            this.data = data;
            this.parent = parent;
        }
    
        public List> getChildren() {
            return children;
        }
    
        public void setParent(Node parent) {
            parent.addChild(this);
            this.parent = parent;
        }
    
        public void addChild(T data) {
            Node child = new Node(data);
            child.setParent(this);
            this.children.add(child);
        }
    
        public void addChild(Node child) {
            child.setParent(this);
            this.children.add(child);
        }
    
        public T getData() {
            return this.data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    
        public boolean isRoot() {
            return (this.parent == null);
        }
    
        public boolean isLeaf() {
            return this.children.size == 0;
        }
    
        public void removeParent() {
            this.parent = null;
        }
    }
    

    Example:

    import java.util.List;
    
    Node parentNode = new Node("Parent"); 
    Node childNode1 = new Node("Child 1", parentNode);
    Node childNode2 = new Node("Child 2");     
    
    childNode2.setParent(parentNode); 
    
    Node grandchildNode = new Node("Grandchild of parentNode. Child of childNode1", childNode1); 
    List> childrenNodes = parentNode.getChildren();
    

提交回复
热议问题