java实现线索二叉树

    public class test {
        //创建完全二叉树
        public static node1 buildTree(int[] array, int index){
            node1 node = null;
            if(index > array.length){
                return null;
            }
            node = new node1(array[index - 1]);
            node.left = buildTree(array,2*index);
            node.right = buildTree(array,2*index+1);
            return node;
        }
        //创建线索二叉树
        public static  node1 ThreadTree(node1 node, node1 pre){
            if (node != null) {
                ThreadTree(node.getLeft(),pre);//先找到最左面的子节点,然后依次向上递归
                if (node.getLeft() == null) {
                    node.ltag = 1;
                    node.left = pre;
                }
                if (pre != null && pre.right == null) {
                    pre.rtag = 1;
                    pre.right = node;
                }
                pre = node;
                ThreadTree(node.right, pre);
            }
            return node;
        }
        //寻找后继节点
        public static  void insuccnode(node1 root, node1 node){
            int data = root.data;
          if(root.ltag == 1){
              System.out.println(root.data);
          }else{
              if(node == null){
                  node = root.right;
              }else{
                  node = root.left;
              }
              insuccnode(node,node);
          }
        }
        public static void main(String[] args) {
            int[]array = {1,2,3,4,5,6,7,8,9};
            node1 root = buildTree(array,1);
            node1 pre = null;
            root = ThreadTree(root, pre);
            node1 nn = null;
            insuccnode(root,nn);
        }
    }
public class node1 {
    int data;
    node1 left;
    node1 right;
    int ltag;
    int rtag;
    public node1(int data){
        this.data = data;
        this.left = null;
        this.right = null;
        this.rtag = 0;
        this.ltag = 0;
    }
    public node1 getLeft(){
        return left;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43408956/article/details/89412813