国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中二叉樹數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)示例

2019-11-26 15:01:23
字體:
供稿:網(wǎng)友

來看一個具體的習(xí)題實踐:

題目
根據(jù)二叉樹前序遍歷序列例如:7,-7,8,#,#,-3,6,#,9,#,#,#,-5,#,#,構(gòu)建二叉樹,并且用前序、中序、后序進(jìn)行遍歷

代碼

 import java.util.Scanner;      public class BinaryTree {     public static String[] str;     public static int count;        /**      * 靜態(tài)內(nèi)部類,定義二叉樹節(jié)點      */     static class TreeNode {       public String data;       TreeNode lchild;       TreeNode rchild;          public TreeNode(String x) {         this.data = x;       }     }        /**      * 根據(jù)前序序列遞歸構(gòu)建二叉樹      *      * @return      */     public static TreeNode createBtree() {       TreeNode root = null;          if (count >= str.length || str[count++].equals("#")) {         root = null;       } else {         root = new TreeNode(str[count - 1]);         root.lchild = createBtree();         root.rchild = createBtree();       }          return root;     }        /**      * 前序遍歷      *      * @param root      */     public static void preTraverse(TreeNode root) {       if (root != null) {         System.out.print(root.data + " ");         preTraverse(root.lchild);         preTraverse(root.rchild);       }     }        /**      * 中序遍歷      *      * @param root      */     public static void inTraverse(TreeNode root) {       if (root != null) {         inTraverse(root.lchild);         System.out.print(root.data + " ");         inTraverse(root.rchild);       }     }        /**      * 后序遍歷      *      * @param root      */     public static void postTraverse(TreeNode root) {       if (root != null) {         postTraverse(root.lchild);         postTraverse(root.rchild);         System.out.print(root.data + " ");       }     }        public static void main(String args[]) {       Scanner cin = new Scanner(System.in);          while (cin.hasNext()) {         String s = cin.nextLine();         str = s.split(",");            count = 0;            TreeNode root = createBtree();            // 前序遍歷         preTraverse(root);         System.out.println();            // 中序遍歷         inTraverse(root);         System.out.println();            // 后序遍歷         postTraverse(root);         System.out.println();       }     }   }

二叉樹的深度

下面是是實現(xiàn)二叉樹的遞歸算法的實現(xiàn),其思想就是,若為空,則其深度為0,否則,其深度等于左子樹和右子樹的深度的最大值加1:

class Node{ String name; Node left; Node right; public Node(String name) { this.name = name; } @Override public String toString() { return name; }}//定義二叉樹class BinaryTree{ Node root;  public BinaryTree(){ root = null; } //為了方便起見,我就直接寫個初始化的二叉樹,詳細(xì)的可以見以前的日志 public void initTree(){  Node node1 = new Node("a"); Node node2 = new Node("b"); Node node3 = new Node("c"); Node node4 = new Node("d"); Node node5 = new Node("e"); root = node1; node1.left = node2; node2.right = node3; node1.right = node4; node3.left = node5; } //求二叉樹的深度 int length(Node root){ int depth1; int depth2; if(root == null) return 0; //左子樹的深度 depth1 = length(root.right); //右子樹的深度 depth2 = length(root.left); if(depth1>depth2)  return depth1+1; else  return depth2+1; }}public class TestMatch{ public static void main(String[] args) { BinaryTree tree = new BinaryTree(); tree.initTree(); System.out.println(tree.length(tree.root)); }}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华亭县| 沾化县| 荣成市| 永济市| 筠连县| 保康县| 岚皋县| 信宜市| 宜兴市| 朝阳市| 麻江县| 旅游| 句容市| 女性| 杨浦区| 东莞市| 南召县| 威海市| 富蕴县| 宜宾县| 那坡县| 安义县| 昌吉市| 重庆市| 平潭县| 杂多县| 集贤县| 北碚区| 松潘县| 东源县| 东莞市| 广州市| 永登县| 轮台县| 慈利县| 丰城市| 尼玛县| 将乐县| 临江市| 将乐县| 诏安县|