您的位置:首页 > 编程语言 > Java开发

Java实现二叉树,以及先序、中序、后序遍历算法的实现

2017-10-18 16:13 686 查看
1.Node类
public class Node {
int val;
Node left;
Node right;

Node(int val){
this.val=val;
}

}
2.BinaryTree类
import java.util.ArrayList;

public class BinaryTree {
Node root;
public BinaryTree(){

}

public void setRoot(Node root) {
this.root=root;
}

boolean contain(Node root,int x) {
boolean res=false;
if(root.val==x) {
res=true;
return res;
}

if(root.left!=null) {
res=contain(root.left,x);
if(res==true)
return res;
}

if(root.right!=null) {
res=contain(root.right,x);
if(res==true)
return res;
}
return res;
}

/**
* 树的先序遍历结果
* @return
*/
public ArrayList<Integer> preTraversal(Node node) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(node==null) {
return list;
}
list.add(node.val);
list.addAll(preTraversal(node.left));
list.addAll(preTraversal(node.right));
return list;
}

/**
* 树的中序遍历结果
* @return
*/
public ArrayList<Integer> midTraversal(Node node) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(node==null) {
return list;
}
list.addAll(midTraversal(node.left));
list.add(node.val);
list.addAll(midTraversal(node.right));
return list;
}
/**
* 树的后序遍历结果
* @return
*/
public ArrayList<Integer> afterTraversal(Node node) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(node==null) {
return list;
}
list.addAll(afterTraversal(node.left));
list.addAll(afterTraversal(node.right));
list.add(node.val);
return list;
}

}
3.层次遍历——采用循环
/**
* 层次遍历
* @param node
* @return
*/
public ArrayList<Integer> layerTraversal(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(root==null) {
return list;//此处如果直接返回null,则测试失败
}
ArrayList<TreeNode> queueList = new ArrayList<TreeNode>();//用于存储要遍历的节点(按照同层左先进,不同层上先进的规则)
queueList.add(root);

while(queueList.size()>0) {
TreeNode thisNode = queueList.remove(0);
list.add(thisNode.val);
if(thisNode.left!=null) {
queueList.add(thisNode.left);
}
if(thisNode.right!=null) {
queueList.add(thisNode.right);
}
}

return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐