链表Node,二叉树TreeNode, 广度优先搜索中压入队列的Node, 字典树中的Node

链表Node这么写

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

Node节点中有个成员变量val,是整型的,代表这个节点的值。next指针指向的是下一个节点。

二叉树TreeNode

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    public TreeNode (int val) {
        this.val = val;
    }

}

广度优先队列中的Node。
Node一般用来保存某个状态,可能有两个成员变量,也可能有三个。在做题的时候我自己用到过。

class Node {
    int s;
    int m;
}

字典树中的Node
见左神算法数的字典树实现

class TrieNode {
    int path;
    int end;
    TrieNode[] map;
    public TrieNode (){
        path = 0;
        end = 0;
        map = new TrieNode(26);
    }
}

【解释】TrieNode类中,path表示有多少个单词共用这个节点,end表示有多少单词以这个节点结尾。map是个哈希表结构,key代表该节点的一条字符路径,value表示字符路径指向的节点。对于英语单词来说,map是长度为26的数组。
在字符较多的情况下,可以选择用真实的哈希结构map实现
我这里自己写下

class TrieNode {
    int path;
    int end;
    HashMap map = new HashMap<>();
    public TrieNode (){
        path = 0;
        end = 0;
    }
}

更新节点的时候就可以使用

TrieNode.map.put()来添加特定字符对应的节点
也可以更改map的value值了

你可能感兴趣的:(数据结构与算法)