java二叉树的遍历,
java二叉树的遍历,
三种方式遍历:
先构建一颗二叉树:
package com.sec.t31;
public class TreeNode {
private TreeNode leftNode; //左节点
private TreeNode rightNode;//右节点
private String data;//数据
public TreeNode(String data){
this.data=data;
}
public TreeNode(String data,TreeNode leftNode,TreeNode rightNode){
this.data=data;
this.leftNode=leftNode;
this.rightNode=rightNode;
}
public TreeNode getLeftNode() {
return leftNode;
}
public void setLeftNode(TreeNode leftNode) {
this.leftNode = leftNode;
}
public TreeNode getRightNode() {
return rightNode;
}
public void setRightNode(TreeNode rightNode) {
this.rightNode = rightNode;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
写出三种查询到方式:
package com.sec.t31;
public class TreeQuery {
private TreeNode node;
public TreeQuery( TreeNode node){
this.node=node;
}
public static void dayin(String data){
System.out.println(data);
}
public void xianxu(TreeNode node){
if(node==null){
return;
}
dayin(node.getData());
xianxu(node.getLeftNode());
xianxu(node.getRightNode());
}
public void zhongxu(TreeNode node) {
if(node==null)
return;
zhongxu(node.getLeftNode());
dayin(node.getData());
zhongxu(node.getRightNode());
}
public void houxu (TreeNode node) {
if(node==null)
return;
houxu(node.getLeftNode());
houxu(node.getRightNode());
dayin(node.getData());
}
public static void main(String[] args) {
TreeNode a6=new TreeNode("数据6", null, null);
TreeNode a7=new TreeNode("数据7", null, null);
TreeNode a8=new TreeNode("数据8", null, null);
TreeNode a9=new TreeNode("数据9", null, null);
TreeNode a10=new TreeNode("数据10", null, null);
TreeNode a5=new TreeNode("数据5", a10, null);
TreeNode a3=new TreeNode("数据3", a6, a7);
TreeNode a4=new TreeNode("数据4", a8, a9);
TreeNode a2=new TreeNode("数据2", a4, a5);
TreeNode a1=new TreeNode("数据1", a2, a3);
TreeQuery tq=new TreeQuery(a1);
tq.houxu(a1);
}
}
先序遍历:
假设一颗树的完整按照顺序产生,那么这颗树的先序遍历则是啊a1,a2,a3,a4,a9,
数据1
数据2
数据4
数据8
数据9
数据5
数据10
数据3
数据6
数据7
中序遍历:
后序遍历:
相关文章
- 暂无相关文章
用户点评