Java 树的孩子表示法的Java写法
本文最后更新于 469 天前,其中的信息可能已经有所发展或是发生改变。

一:前言

最近学习数据结构了解了树的孩子表示法(C语言)后,网上搜索了一下Java的写法却找不到,于是我打算自己用Java写一遍树的孩子表示法,方法较简单,可以作为参考~~~

 

二:树的孩子表示法

首先孩子表示法的树是这样的:

 

 

 

于是乎他的Java代码就产生啦~~~~~~~~~~~~:

 

 

结点代码:

public class Node<T> {
    //数据域
    int data;
    //指针域
    Node next;

    int parent;

    public Node(int data,int index){
        this.data = data;
        this.parent = index;
    }

    public int getData() {
        return data;
    }

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

    public Node getNext() {
        return next;
    }

    public void setNext(Node<T> next) {
        this.next = next;
    }

    public int getParent() {
        return parent;
    }

    public void setParent(int parent) {
        this.parent = parent;
    }
}
 孩子表示法:
public class ChildTree_two {
    //结点数组
    Node<Iterable>[] nodes;
    //当前元素数量
    int size;
    //最大元素数量--由用户定义
    int max_Size;

    //初始化
    public ChildTree_two(int max_Size){
        this.nodes = new Node[max_Size];
        this.size = 0;
        this.max_Size = max_Size;
    }

    /**
     *
     * @param data  传入的数据
     * @param index 该数据的父节点的数据
     */

    //插入操作
    public void insert(int data,int index){
        Node<Iterable> node = new Node<Iterable>(data,index);
        if (index == -1){
            nodes[size] = node;
            size++;
        }else {
            int father =  findfather(index);
            if (father == -1){
                System.out.println("该父节点没有找到");
            }else{
                nodes[size] = node;
                //两个结点拥有相同的数据,当然这是一个较笨的方法
                Node<Iterable> node_link = new Node<Iterable>(data,index);
                node_link.setNext(nodes[father].getNext());
                nodes[father].setNext(node_link);
                size++;
            }


        }

    }

    /**
     *
     * @param index 下标
     * @return 返回父节点的下标
     */
    public int findfather(int index){
        for (int i = 0; i<size;i++){
            if (nodes[i].data == index){
                return i;
            }
        }
        return -1;
    }

    public void show(){
        for (int i = 0; i<size;i++){
            System.out.print("该节点的数据为"+nodes[i].getData() + "  双亲结点为" + nodes[i].getParent());
            while (nodes[i].getNext() != null){
                System.out.print("  该结点的子节点为:" + nodes[i].getNext().getData());
                nodes[i] = nodes[i].getNext();
            }
            System.out.println();
        }
    }

 

测试代码:

 

public class ChildTreeDemo {
    public static void main(String[] args) {
        ChildTree_two demo = new ChildTree_two(10);
        demo.insert(1,-1);
        demo.insert(2,1);
        demo.insert(3,1);
        demo.insert(4,1);
        demo.insert(7,4);
        demo.show();
    }


}

 

最后放图:

 

 

评论

  1. 123
    Android Chrome
    1年前
    2021-9-17 11:32:08

    好棒!又有动力了!!!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇