diff --git a/src/main/java/org/redkale/util/ByteTreeNode.java b/src/main/java/org/redkale/util/ByteTreeNode.java index 2a01e0c6a..da0233bb0 100644 --- a/src/main/java/org/redkale/util/ByteTreeNode.java +++ b/src/main/java/org/redkale/util/ByteTreeNode.java @@ -15,14 +15,28 @@ package org.redkale.util; */ public class ByteTreeNode { + protected final byte index; + + protected final ByteTreeNode parent; + protected T value; protected ByteTreeNode[] nodes = new ByteTreeNode[127]; - protected ByteTreeNode() {} + protected ByteTreeNode() { + this(null, 0); + } + + private ByteTreeNode(ByteTreeNode parent, int index) { + this.parent = parent; + if (index < 0 || index >= nodes.length) { + throw new RedkaleException(index + " is illegal"); + } + this.index = (byte) index; + } public static ByteTreeNode create() { - return new ByteTreeNode(); + return new ByteTreeNode(null, 0); } public ByteTreeNode getNode(byte b) { @@ -33,6 +47,14 @@ public class ByteTreeNode { return ch >= nodes.length ? null : nodes[ch]; } + public ByteTreeNode getParent() { + return parent; + } + + public byte getIndex() { + return index; + } + public T getValue() { return value; } @@ -56,7 +78,7 @@ public class ByteTreeNode { } ByteTreeNode s = n.nodes[ch]; if (s == null) { - s = new ByteTreeNode(); + s = new ByteTreeNode(n, ch); n.nodes[ch] = s; } n = s;