Java实现二叉树的建立以及遍历
- 二叉树的结构如下图所示
我采用的建立二叉树是二叉搜索树:空树或者二叉树的所有节点比他的左子节点大,比他的右子节点小。
话不多说直接上代码就好:
package 二叉树;
//这是构建树的类
public class MyTree {
int ii = 1;
TreeNode root = new TreeNode();
public MyTree(){
}
public MyTree(int data) {
root.data = data;
}
public void intRoot(int data) {
root.data = data;
}
public void addNode(int data) {
this.root.add(data);
}
//这里只做了先序遍历
//中序遍历和后续遍历只是调整一下输出的位置
public void protraver(TreeNode node) {
//即空控制以下这行代码的位置改变遍历方式
System.out.println("第" + ii + '次'+node.data);
ii++;
if(node.left != null) {
protraver(node.left);
}
if(node.right != null) {
protraver(node.right);
}
}
public void protraverse() {
if(root !=null) {
ii = 1;
protraver(root);
}
}
}
//这是构建节点的类
class TreeNode{
int data;
TreeNode left = null;
TreeNode right = null;
public TreeNode() {}
public TreeNode(int data) {
this.data = data;
}
//通过递归得到应该插入的位置:左小右大
public void add(int data) {
if(data<this.data) {
if(this.left!=null) {
this.left.add(data);
}
else {
TreeNode temp = new TreeNode(data);
this.left = temp;
}
}else {
if(this.right!=null) {
this.right.add(data);
}
else {
TreeNode temp = new TreeNode(data);
this.right = temp;
}
}
}
}