有点像堆
package com.jtlyuan; class BinaryTreeNode { int data; private BinaryTreeNode leftTree; private BinaryTreeNode rightTree;
public BinaryTreeNode(int data) { super(); this.data = data; } public void add(BinaryTreeNode node) { if (node.data <= this.data) { if (this.leftTree ==null) { this.leftTree = node; } else { this.leftTree.add(node); } } else { if (this.rightTree ==null) { this.rightTree = node; } else { this.rightTree.add(node); } } } public void printlNode(){ if(this.leftTree!=null){ this.leftTree.printlNode(); } System.out.print(this.data+" "); if(this.rightTree!=null){ this.rightTree.printlNode(); } } } public class BinaryTree { BinaryTreeNode root; public void addNode(BinaryTreeNode newNode) { if (root == null) { root = newNode; } else { root.add(newNode); } } //必须要用中序遍历 public void print(){ root.printlNode(); } public static void main(String[] args) { BinaryTree bt = new BinaryTree(); bt.addNode(new BinaryTreeNode(5)); bt.addNode(new BinaryTreeNode(35)); bt.addNode(new BinaryTreeNode(65)); bt.addNode(new BinaryTreeNode(55)); bt.addNode(new BinaryTreeNode(6)); bt.addNode(new BinaryTreeNode(3)); bt.addNode(new BinaryTreeNode(21)); bt.addNode(new BinaryTreeNode(41)); bt.addNode(new BinaryTreeNode(29)); bt.addNode(new BinaryTreeNode(4)); bt.addNode(new BinaryTreeNode(1)); bt.addNode(new BinaryTreeNode(1)); bt.print(); } } /*1 1 3 4 5 6 21 29 35 41 55 65*/ |
二叉树遍历方式有:先序遍历、中序遍历、后序遍历;树和森林的遍历方式:先根遍历、后根遍历。
知道先序遍历和中序遍历可以确定一棵树。
知道后序遍历和中序遍历可以确定一棵树。