public ThreadNode(int value) { this.value = value; this.left_Thread = 0; this.right_Thread = 0; this.left_node = null; this.right_node = null; }
public void Addnode(int value) { ThreadNode newnode = new ThreadNode(value); ThreadNode current; ThreadNode parent; ThreadNode previous = new ThreadNode(value); int pos; if (rootnode == null) { rootnode = newnode; rootnode.left_node = rootnode; rootnode.right_node = null; rootnode.left_Thread = 0; rootnode.right_Thread = 1; return; } current = rootnode.right_node; if (current == null) { rootnode.right_node = newnode; newnode.left_node = rootnode; newnode.right_node = rootnode; return; } parent = rootnode; pos = 0; while (current != null) { if (current.value > value) { if (pos != -1) { pos = -1; previous = parent; } parent = current; if (current.left_Thread == 1) { current = current.left_node; } else { current = null; } } else { if (pos != 1) { pos = 1; previous = parent; } parent = current; if (current.right_Thread == 1) { current = current.right_node; } else { current = null; } } } if (parent.value > value) { parent.left_Thread = 1; parent.left_node = newnode; newnode.left_node = previous; newnode.right_node = parent; } else { parent.right_Thread = 1; parent.right_node = newnode; newnode.left_node = parent; newnode.right_node = previous; } return; }
public Thread_Binary_Tree() //构造函数::无传入参数 { rootnode = null; }