您的位置:首页 > Web前端

《剑指offer》——二叉树的深度

2015-11-08 19:42 351 查看
T:

题目描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

本题没什么难度,以一个递归即可解决。

code:

package niuke.sward2offer.treeDepth;

class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;

}

}

/**
* T: 二叉树的深度
*
* 题目描述
* 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
*
* date: 2015.11.8  19:15
* @author SSS
*
*/
public class Solution {

/**
* 一个递归就可以解决:
* 递归函数TreeDepth(TreeNode param)表示以参数节点param为根节点的子树的深度
* @param root
* @return
*/
public int TreeDepth(TreeNode root) {
if (root == null) {
return 0;
}
int depth;
if (this.TreeDepth(root.left) > this.TreeDepth(root.right)) {
return 1 + this.TreeDepth(root.left);
}
else {
return 1 + this.TreeDepth(root.right);
}
}

public static void main(String []args) {
TreeNode root = new TreeNode(1);
TreeNode left1 = new TreeNode(1);
TreeNode right1 = new TreeNode(1);

root.left = left1;
root.right = right1;

TreeNode left11 = new TreeNode(3);
TreeNode right12 = new TreeNode(4);
left1.right = right12;
right12.left = left11;
right12.right = null;

TreeNode left21 = new TreeNode(3);
right1.left = left21;
left21.left = null;
left21.right = null;

left11.left = null;
left11.right = null;
left1.left = null;
right1.right = null;

Solution solution = new Solution();
System.out.println(solution.TreeDepth(root));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: