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);