数据结构之线索二叉树的创建及遍历

 private treeNode treeNode;
  treeNode pre;
public treeNode getTreeNode() {
    return treeNode;
}

public void setTreeNode(treeNode treeNode) {
    this.treeNode = treeNode;
}
 public void threadNodes(treeNode root){
     if(null==root){
         return;
     }
    //递归左边的树
    threadNodes(root.getLeftTreeNode());
    if(root.getLeftTreeNode()==null){
        root.setLeftTreeNode(pre);
        root.setLeftTreeType(1);
    }
    if(pre!=null&&pre.getRightTreeNode()==null){
        pre.setRightTreeNode(root);
        pre.setRightTreeType(1);
    }
    pre=root;
    //递归右边的树
    threadNodes(root.getRightTreeNode());
}
 public void  threadsIter(treeNode root){
     treeNode node=root;
     while(node!=null){
         while(node.getLeftTreeType()==0){
             node= node.getLeftTreeNode();
         }
         System.out.println(node.getValue());
         while(node.getRightTreeType()==1){
             node=node.getRightTreeNode();
             System.out.println(node.getValue());
         }
         node=node.getRightTreeNode();
     }
 }
public class treeNode {
    private int value;
    private treeNode leftTreeNode;
    private int leftTreeType;
    private treeNode rightTreeNode;
    private int rightTreeType;
}

        binaryTree binaryTree=new binaryTree();
        treeNode treeNode=new treeNode();
        treeNode.setValue(1);
        binaryTree.setTreeNode(treeNode);
        //创建左子树
        treeNode leftTreeNode=new treeNode();
        leftTreeNode.setValue(2);
        treeNode.setLeftTreeNode(leftTreeNode);
        treeNode leftTreeNode1=new treeNode();
        leftTreeNode1.setValue(4);
        leftTreeNode.setLeftTreeNode(leftTreeNode1);
        treeNode leftTreeNode2=new treeNode();
        leftTreeNode2.setValue(5);
        leftTreeNode.setRightTreeNode(leftTreeNode2);
        //创建右子树
        treeNode rightTreeNode=new treeNode();
        rightTreeNode.setValue(3);
        treeNode.setRightTreeNode(rightTreeNode);
        treeNode rightTreeNode1=new treeNode();
        rightTreeNode1.setValue(6);
        rightTreeNode.setLeftTreeNode(rightTreeNode1);
        treeNode rightTreeNode2=new treeNode();
        rightTreeNode2.setValue(7);
        rightTreeNode.setRightTreeNode(rightTreeNode2);
/*        binaryTree.deleteTreeNode(1);
        binaryTree.afterShow();*/
        binaryTree.threadNodes(treeNode);
        binaryTree.threadsIter(treeNode);
        //System.out.println(rightTreeNode2.getLeftTreeNode()==rightTreeNode);
        binaryTree binaryTree=new binaryTree();
        treeNode treeNode=new treeNode();
        treeNode.setValue(1);
        binaryTree.setTreeNode(treeNode);
        //创建左子树
        treeNode leftTreeNode=new treeNode();
        leftTreeNode.setValue(2);
        treeNode.setLeftTreeNode(leftTreeNode);
        treeNode leftTreeNode1=new treeNode();
        leftTreeNode1.setValue(4);
        leftTreeNode.setLeftTreeNode(leftTreeNode1);
        treeNode leftTreeNode2=new treeNode();
        leftTreeNode2.setValue(5);
        leftTreeNode.setRightTreeNode(leftTreeNode2);
        //创建右子树
        treeNode rightTreeNode=new treeNode();
        rightTreeNode.setValue(3);
        treeNode.setRightTreeNode(rightTreeNode);
        treeNode rightTreeNode1=new treeNode();
        rightTreeNode1.setValue(6);
        rightTreeNode.setLeftTreeNode(rightTreeNode1);
        treeNode rightTreeNode2=new treeNode();
        rightTreeNode2.setValue(7);
        rightTreeNode.setRightTreeNode(rightTreeNode2);
/*        binaryTree.deleteTreeNode(1);
        binaryTree.afterShow();*/
        binaryTree.threadNodes(treeNode);
        binaryTree.threadsIter(treeNode);
        //System.out.println(rightTreeNode2.getLeftTreeNode()==rightTreeNode);

 

 

 

posted @ 2020-03-30 11:13  sunjinwei123  阅读(215)  评论(0)    收藏  举报