int data //根节点数据
BinaryTree left //左子树
BinaryTree right //右子树
public BinaryTree(int data) //实例化二叉树类
{
this.data = data
left = null
right = null
}
public void insert(BinaryTree root,int data){ //向二叉树中插入子节点
if(data>root.data) //二叉树的左节点都比根节点小
{
if(root.right==null){
root.right = new BinaryTree(data)
}else{
this.insert(root.right, data)
}
}else{ //二叉树的右节点都比根节点大
if(root.left==null){
root.left = new BinaryTree(data)
}else{
this.insert(root.left, data)
}
}
}
}
当建立好二叉树类后可以创建二叉树实例,并实现二叉树的先根遍历,中根遍历,后根遍历,代码如下:
package package2
public class BinaryTreePreorder {
public static void preOrder(BinaryTree root){ //先根遍历
if(root!=null){
System.out.print(root.data+"-")
preOrder(root.left)
preOrder(root.right)
}
}
public static void inOrder(BinaryTree root){ //中根遍历
if(root!=null){
inOrder(root.left)
System.out.print(root.data+"--")
inOrder(root.right)
}
}
public static void postOrder(BinaryTree root){ //后根遍历
if(root!=null){
postOrder(root.left)
postOrder(root.right)
System.out.print(root.data+"---")
}
}
public static void main(String[] str){
int[] array = {12,76,35,22,16,48,90,46,9,40}
BinaryTree root = new BinaryTree(array[0]) //创建二叉树
for(int i=1i<array.lengthi++){
root.insert(root, array[i]) //向二叉树中插入数据
}
System.out.println("先根遍历:")
preOrder(root)
System.out.println()
System.out.println("中根遍历:")
inOrder(root)
System.out.println()
System.out.println("后根遍历:")
postOrder(root)
import java.util.ArrayListpublic class TreeNode {
private TreeNode leftNode
private TreeNode rightNode
private String nodeName
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 getNodeName() {
return nodeName
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName
}
public static int level=0
public static void findNodeByLevel(ArrayList<TreeNode>nodes){
if(nodes==null||nodes.size()==0){
return
}
level++
ArrayList<TreeNode>temp = new ArrayList()
for(TreeNode node:nodes){
System.out.println("第"+level+"层:"+node.getNodeName())
if(node.getLeftNode()!=null){
temp.add(node.getLeftNode())
}
if(node.getRightNode()!=null){
temp.add(node.getRightNode())
}
}
nodes.removeAll(nodes)
findNodeByLevel(temp)
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeNode root = new TreeNode()
root.setNodeName("root")
TreeNode node1 = new TreeNode()
node1.setNodeName("node1")
TreeNode node3 = new TreeNode()
node3.setNodeName("node3")
TreeNode node7 = new TreeNode()
node7.setNodeName("node7")
TreeNode node8 = new TreeNode()
node8.setNodeName("node8")
TreeNode node4 = new TreeNode()
node4.setNodeName("node4")
TreeNode node2 = new TreeNode()
node2.setNodeName("node2")
TreeNode node5 = new TreeNode()
node5.setNodeName("node5")
TreeNode node6 = new TreeNode()
node6.setNodeName("node6")
root.setLeftNode(node1)
node1.setLeftNode(node3)
node3.setLeftNode(node7)
node3.setRightNode(node8)
node1.setRightNode(node4)
root.setRightNode(node2)
node2.setLeftNode(node5)
node2.setRightNode(node6)
ArrayList<TreeNode>nodes = new ArrayList<TreeNode>()
nodes.add(root)
findNodeByLevel(nodes)
}
}