您的位置:首页 > Web前端 > Node.js

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

2018-03-25 22:24 204 查看
链表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<Character, TrieNode> map = new HashMap<>();
public TrieNode (){
path = 0;
end = 0;
}
}


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

TrieNode.map.put()来添加特定字符对应的节点
也可以更改map的value值了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: