求一颗二叉查找树的深度(java实现)
来源:互联网 发布:地址栏执行js 编辑:程序博客网 时间:2024/06/10 05:06
题目:输入一棵二元树的根结点,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二元树:
10
/ \
6 14
/ / \
4 12 16+++++
输出该树的深度3。
源代码:
package com.xz.java02;
class Node<T>{
T value;
int Height=0;
Node left;
Node right;
Node(T x,Node <T>l,Node<T> r){
value=x;
left=l;
right=r;
}
}
public class Test <T extends Comparable<? super T>>{
private Node root;
public void insert(T x){
root=insert(x,root);
}
public Node insert(T x,Node <T>n){
if(n==null){
return new Node(x,null,null);
}
int compareResult=x.compareTo(n.value);
if(compareResult<0){
n.left=insert(x,n.left);
}
else if(compareResult>0){
n.right=insert(x,n.right);
}
else
;
return n;
}
public void print(){
print(root);
}
public void print(Node n){
if(n!=null){
System.out.print(n.value+" ");
print(n.left);
print(n.right);
}
}
//得到某个节点的深度
public int getHeight(Node p){ //该节点左子树的高度和右子树的高度的较大者
int Height;
if(p.left==null&&p.right==null){
return 1;
}
else if(p.left!=null&&p.right!=null){
Height= Math.max(getLeftHeight(p.left), getRightHeight(p.right))+1;
}
else if(p.left==null){
Height=getRightHeight(p.right)+1;
}
else {
Height=getLeftHeight(p.left);
}
return Height;
}
//得到树的深度:
public int getLeftHeight(Node AnyNode){ //得到某个节点左子树的高度
Node p=AnyNode;
int leftHeight=getHeight(p);
return leftHeight;
}
public int getRightHeight(Node AnyNode){ //得到某个节点右子树的高度
Node p=AnyNode;
int rightHeight=getHeight(p);
return rightHeight;
}
public static void main(String[] args) {
Test t=new Test();
t.insert(10);
t.insert(6);
t.insert(14);
t.insert(4);
t.insert(12);
t.insert(16);
t.insert(17);
System.out.println("中序遍历结果:");
t.print();
System.out.println();
System.out.println("树的深度为:");
System.out.println(t.getHeight(t.root));
}
}
- 求一颗二叉查找树的深度(java实现)
- 二叉树的深度(Java实现)
- Java实现二叉树的深度
- 二叉树的深度java实现
- 二叉查找树的Java实现
- java 实现的二叉查找树
- 二叉查找树的java实现
- 二叉查找树的Java实现
- 数据结构--二叉查找树的java实现
- 二叉查找树的java实现
- 二叉查找树Java的实现
- 二叉树的创建,遍历,查找,查找父节点,深度,大小等的递归实现
- java实现二叉树查找,统计结点个数,统计树的深度及判断两棵树是否相等
- 查找二叉树的最小深度
- JAVA二叉查找树实现
- java实现二叉查找树
- 二叉查找树 java实现
- 二叉查找树 Java实现
- 将中文转为拼音 iOS
- IOS开发前的准备
- cocos2d 3.10环境搭建
- [疯狂Java]UDP:MulticastSocket实现组播
- cf25d 修路使其联通 (并查集)
- 求一颗二叉查找树的深度(java实现)
- lightoj 1071 - Baker Vai DP
- QT5 动态链接库的创建和使用
- 编写可读代码的艺术 (12)
- 机器学习的数学基础(一)—— 期望、方差、协方差与相关系数
- 日常代码
- typedef和#define的区别及用法
- Objective-C编码规范[译]
- 排序算法:Insertion Sort和Merge Sort in GoLang