二叉树深度

Posted XuGuobao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树深度相关的知识,希望对你有一定的参考价值。

一、用Integer为Comparable接口实例化

为了简化代码,直接使用Integer类,因为Integer类;已经实现了Comparable接口。

 1 package comparabledemo;
 2 
 3 public class ComparableDemo02 {
 4 
 5     public static void main(String[] args) {
 6         Comparable com = null;
 7         com  =30;               //实例化Comparable接口
 8         System.out.println(com);      //实际上调用的是toString()方法
 9     }
10 
11 }

二、二叉树的元素添加、中序遍历、深度

 1 package comparabledemo;
 2 
 3 class BinaryTree{
 4     class Node{
 5         private Comparable data;
 6         private Node left;
 7         private Node right;
 8         public void addNode(Node newNode){
 9             if(newNode.data.compareTo(this.data)<0){
10                 if(this.left == null){
11                     this.left = newNode;
12                 }else{
13                     this.left.addNode(newNode);
14                 }
15             }
16             if(newNode.data.compareTo(this.data)>=0){
17                 if(this.right ==null){
18                     this.right = newNode;
19                 }else{
20                     this.right.addNode(newNode);
21                 }
22             }
23         }
24         public void printNode(){
25             if(this.left != null){
26                 this.left.printNode();
27             }
28             System.out.println(this.data);
29             if(this.right != null){
30                 this.right.printNode();
31             }
32         }
33         public int treeDepth(Node node){
34             int deptleft,deptright;
35             if(node == null){
36                 return 0;
37             }else{
38                 deptleft = treeDepth(node.left);
39                 deptright = treeDepth(node.right);
40                 if(deptleft>deptright){
41                     return deptleft + 1;
42                 }else{
43                     return deptright + 1;
44                 }
45             }
46         }
47     }
48     private Node root;
49     public void add(Comparable data){
50         Node newNode = new Node();
51         newNode.data = data;
52         if(root == null){
53             root = newNode;
54         }else{
55             root.addNode(newNode);
56         }
57     }
58     public void print(){
59         this.root.printNode();
60     }
61     public void Depth(){
62         int dept;
63         if(this.root == null){
64             dept = 0;
65         }else{
66             dept = this.root.treeDepth(this.root);
67         }
68         System.out.println(dept);
69     }
70 }
71 
72 public class CompatableDemo03 {
73 
74     public static void main(String[] args) {
75         BinaryTree bt = new BinaryTree();
76         
77         bt.add(8);
78         bt.add(3);
79         //bt.add(3);
80         bt.add(10);
81         bt.add(9);
82         bt.add(1);
83         bt.add(5);
84         //bt.add(5);
85         //bt.print();
86         bt.Depth();
87     }
88 }

 

以上是关于二叉树深度的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

python代码计算二叉树的深度

数据结构与算法二叉树——二叉树的最小深度

二叉树--二叉树的最大深度

二叉树的最大深度 递归

写写代码系列028:二叉树的深度优先遍历