二叉樹的三種遍歷方式,遞歸實現。
public class TreeNode {
int value;
TreeNode leftNode;
TreeNode rightNode;
public TreeNode(int value){
this.value = value;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
//前序遍歷
public void preOrder(){
System.out.println(value);
if (leftNode != null){
leftNode.preOrder();
}
if (rightNode != null){
rightNode.preOrder();;
}
}
//中序遍歷
public void midOrder(){
if (leftNode != null){
leftNode.midOrder();
}
System.out.println(value);
if (rightNode != null){
rightNode.midOrder();;
}
}
//後序遍歷
public void postOrder(){
if (leftNode != null){
leftNode.postOrder();
}
if (rightNode != null){
rightNode.postOrder();;
}
System.out.println(value);
}
}
public class BinaryTree {
TreeNode root;
public void setRoot(TreeNode root) {
this.root = root;
}
public TreeNode getRoot() {
return root;
}
//前序遍歷
public void preOrder(){
if (root != null)
root.preOrder();
}
//中序遍歷
public void midOrder(){
if (root != null)
root.midOrder();
}
//後序遍歷
public void postOrder(){
if (root != null)
root.postOrder();
}
}
public class TestBinaryTree {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
//創建第一層根節點
TreeNode root = new TreeNode(1);
binaryTree.setRoot(root);
//創建第二層節點
TreeNode leftNode2 = new TreeNode(2);
root.setLeftNode(leftNode2);
TreeNode rightNode2 = new TreeNode(3);
root.setRightNode(rightNode2);
//創建第3層節點
leftNode2.setLeftNode(new TreeNode(4));
leftNode2.setRightNode(new TreeNode(5));
rightNode2.setLeftNode(new TreeNode(6));
rightNode2.setRightNode(new TreeNode(7));
System.out.println("先序遍歷:");
binaryTree.preOrder();
System.out.println("中序遍歷:");
binaryTree.midOrder();
System.out.println("後序遍歷:");
binaryTree.postOrder();
}
}