包括信息,左指针和右指针(初始值为null)
class HeroNode {private int no;private String name;private HeroNode left; //默认nullprivate HeroNode right; //默认nullpublic HeroNode(int no, String name) {this.no = no;this.name = name;}public int getNo() {return no;}public void setNo(int no) {this.no = no;}public String getName() {return name;}public void setName(String name) {this.name = name;}public HeroNode getLeft() {return left;}public void setLeft(HeroNode left) {this.left = left;}public HeroNode getRight() {return right;}public void setRight(HeroNode right) {this.right = right;}@Overridepublic String toString() {return "HeroNode [no=" + no + ", name=" + name + "]";}} 定义树节点前序遍历方法 先输出当前接单(调用该方法的结点)如果左子结点不为空,则左子节点递归继续该方法左子树遍历结束,如果右子结点不为空,则右子节点递归继续该方法 //编写前序遍历的方法public void preOrder() {System.out.println(this); //先输出父结点//递归向左子树前序遍历if(this.left != null) {this.left.preOrder();}//递归向右子树前序遍历if(this.right != null) {this.right.preOrder();}} 定义树节点中序遍历方法 如果当前结点的左子节点不为空,则左子节点递归该方法直到下一个结点没有左节点,依次返回输出遍历过的左结点左子树遍历结束,现在返回到根节点,如果右子结点不为空,则右子节点递归继续该方法 //中序遍历public void infixOrder() {//递归向左子树中序遍历if(this.left != null) {this.left.infixOrder();}//输出父结点System.out.println(this);//递归向右子树中序遍历if(this.right != null) {this.right.infixOrder();}} 定义树节点后序遍历方法 如果当前结点的左子节点不为空,则左子节点递归该方法如果当前结点的右子节点不为空,则右子节点递归该方法输出当前结点 //后序遍历public void postOrder() {if(this.left != null) {this.left.postOrder();}if(this.right != null) {this.right.postOrder();}System.out.println(this);} 定义二叉树先定义一个根节点和设置根节点的方法
定义前序、中序、后序遍历树的方法
若根节点不为空,根节点调用相应的方法
class BinaryTree {private HeroNode root;public void setRoot(HeroNode root) {this.root = root;}//前序遍历public void preOrder() {if(this.root != null) {this.root.preOrder();}else {System.out.println("二叉树为空,无法遍历");}}//中序遍历public void infixOrder() {if(this.root != null) {this.root.infixOrder();}else {System.out.println("二叉树为空,无法遍历");}}//后序遍历public void postOrder() {if(this.root != null) {this.root.postOrder();}else {System.out.println("二叉树为空,无法遍历");}}}