首页 > 编程知识 正文

二叉树前序、中序、后序遍历(java代码实现)

时间:2023-05-03 10:09:56 阅读:266865 作者:2158

二叉树前序、中序、后序遍历 定义树节点属性

包括信息,左指针和右指针(初始值为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("二叉树为空,无法遍历");}}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。