[Java] Java创建二叉树并遍历的代码 →→→→→进入此内容的聊天室

来自 , 2020-01-17, 写在 Java, 查看 155 次.
URL http://www.code666.cn/view/ef16eb9a
  1. public class BinaryTree {
  2.  
  3.         private Node root;
  4.        
  5.         /**
  6.          *
  7.          * 内部节点类
  8.          * @author yhh
  9.          */
  10.         private class Node{
  11.                 private Node left;
  12.                 private Node right;
  13.                 private int data;
  14.                 public Node(int data){
  15.                         this.left = null;
  16.                         this.right = null;
  17.                         this.data = data;
  18.                 }
  19.         }
  20.        
  21.         public BinaryTree(){
  22.                 root = null;
  23.         }
  24.        
  25.         /**
  26.          * 递归创建二叉树
  27.          * @param node
  28.          * @param data
  29.          */
  30.         public void buildTree(Node node,int data){
  31.                 if(root == null){
  32.                         root = new Node(data);
  33.                 }else{
  34.                         if(data < node.data){
  35.                                 if(node.left == null){
  36.                                         node.left = new Node(data);
  37.                                 }else{
  38.                                         buildTree(node.left,data);
  39.                                 }
  40.                         }else{
  41.                                 if(node.right == null){
  42.                                         node.right = new Node(data);
  43.                                 }else{
  44.                                         buildTree(node.right,data);
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49.        
  50.         /**
  51.          * 前序遍历
  52.          * @param node
  53.          */
  54.         public void preOrder(Node node){
  55.                 if(node != null){
  56.                         System.out.println(node.data);
  57.                         preOrder(node.left);
  58.                         preOrder(node.right);
  59.                 }
  60.         }
  61.        
  62.         /**
  63.          * 中序遍历
  64.          * @param node
  65.          */
  66.         public void inOrder(Node node){
  67.                 if(node != null){
  68.                         inOrder(node.left);
  69.                         System.out.println(node.data);
  70.                         inOrder(node.right);
  71.                 }
  72.         }
  73.        
  74.         /**
  75.          * 后序遍历
  76.          * @param node
  77.          */
  78.         public void postOrder(Node node){
  79.                 if(node != null){
  80.                         postOrder(node.left);
  81.                         postOrder(node.right);
  82.                         System.out.println(node.data);
  83.                 }
  84.         }
  85.        
  86.         public static void main(String[] args) {
  87.                 int[] a = {2,4,12,45,21,6,111};
  88.                 BinaryTree bTree = new BinaryTree();
  89.                 for (int i = 0; i < a.length; i++) {
  90.                         bTree.buildTree(bTree.root, a[i]);
  91.                 }
  92.                 bTree.preOrder(bTree.root);
  93.                 bTree.inOrder(bTree.root);
  94.                 bTree.postOrder(bTree.root);
  95.         }
  96.  
  97. }
  98.  
  99. //java/4871

回复 "Java创建二叉树并遍历的代码"

这儿你可以回复上面这条便签

captcha