• 采用先序遍历 和层次遍历递归建立二叉树--进行封装


     1 package com.offer;
     2 
     3 public class TreeNode {
     4     
     5 int val = 0;
     6 TreeNode left = null;
     7 TreeNode right = null;
     8 
     9 public TreeNode(int val)
    10 {
    11     this.val=val;
    12 }
    13 
    14 public TreeNode()
    15 {
    16     CreateBinaryTree();// 采用默认的
    17     //preShow(this.root);
    18 }
    19 public TreeNode(int array[])
    20 {
    21    this.root=CreateBinaryTree(array);
    22 }
    23 public TreeNode root;  
    24 
    25 public void CreateBinaryTree()
    26 {
    27     int array[]={5,3,6,-1,-1,2,-1,-1,1,-1,-1};
    28     this.root=CreateBinaryTree(array);
    29 }
    30 public TreeNode CreateBinaryTree(int array[])
    31 {
    32     
    33     /**第一种建立二叉树方式采用先序遍历建立二叉树**/
    34     return CreateTreePre(array);
    35     
    36     /**第二种方式采用层次遍历方式建立二叉树*/
    37     //return CreteTreeLevel(array,0);
    38 }
    39 
    40 @SuppressWarnings("unused")
    41 private TreeNode CreateTreeLevel(int[] array,int index) {
    42     if(index>=array.length || array[index]==-1)
    43         return null;
    44     TreeNode node=new TreeNode(array[index]);
    45     node.left=CreateTreeLevel(array,2*index+1);
    46     node.right=CreateTreeLevel(array,2*(index+1));
    47     return node;
    48 }
    49 private int index=0;
    50 
    51 private TreeNode CreateTreePre(int array[])
    52 {
    53       int val=array[index++];
    54       if(val==-1)
    55             return null;
    56         else
    57         {
    58             TreeNode node=new TreeNode(val);
    59             node.left=CreateTreePre(array);
    60             node.right=CreateTreePre(array);
    61             return node;
    62         }
    63 }
    64        
    65 public void preShow(TreeNode node) { // 先序遍历  
    66     if (node != null) {  
    67         System.out.print(node.val + " ");  
    68         preShow(node.left);  
    69         preShow(node.right);  
    70     }  
    71 }  
    72 
    73  public static void main(String[] args)
    74  {
    75     TreeNode r=new TreeNode();}
    76 }
  • 相关阅读:
    L2-004. 这是二叉搜索树吗?*
    L2-001. 紧急救援(最短路的变形)*
    L2-002. 链表去重(数组模拟)
    L1-028. 判断素数
    Linux相关
    2016ICPC-大连 A Simple Math Problem (数学)
    2016ICPC-大连 Convex (几何)
    2016ICPC-大连 To begin or not to begin (简单思维)
    TC704div2 C ModEquationEasy 矩阵快速幂+dp
    poj 3150 Cellular Automaton 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/6806136.html
Copyright © 2020-2023  润新知