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.层次遍历——采用循环
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; }
相关文章推荐
- 二叉树建立以及先序、中序、后序、层次遍历(JAVA 实现)
- Java实现二叉树的先序、中序、后序、层级遍历
- java语言实现二叉树的前序、中序与后序遍历(递归与非递归)
- [置顶] 二叉树的非递归前序、中序以及后序遍历C++模版类实现
- java实现二叉树的先序、中序、后序遍历
- 二叉树的非递归前序,中序,后序遍历的Java实现
- 二叉树的创建以及利用迭代实现中序、先序、后序遍历、清空
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- 【数据结构与算法】(六) c 语言实现简单的二叉树静态创建及先序、中序、后序遍历
- 二叉树的非递归前序、中序以及后序遍历C++模版类实现
- JAVA实现二叉树的遍历的非递归算法及递归算法(前序,中序,后序,层次)
- Java迭代实现二叉树的前序、中序、后序遍历
- java 实现二叉树的构建,先序,中序,后序,层次,递归,非递归的遍历
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现
- 二叉树先序、中序、后续遍历递归以及非递归java实现
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 二叉树先序、中序、后序遍历算法的实现
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)