二叉树最大深度(Java)
2017-04-18 09:00
453 查看
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。 解体思路: 如果根节点为空,则深度为0,返回0,递归的出口 如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度, 比较左右子树深度值,返回较大的那一个 通过递归调用
public class BinaryTreeDepth{public static void main(String[] args){//创建二叉树 TreeNode root = new TreeNode(1);TreeNode[] node = new TreeNode[6];for(int i=0; i<6; i++){node[i] = new TreeNode(i+2);System.out.println(node[i].value+" ");}root.leftNode = node[0];root.rightNode = node[1];node[0].leftNode = null;node[0].rightNode = node[3];node[1].leftNode = node[4];node[1].leftNode = node[5]; //计算二叉树深度 BinaryTreeDepth btd = new BinaryTreeDepth();int num = btd.depthOfTree( root);System.out.println("The depth of binaryTree is:"+num);}private int depthOfTree(TreeNode root){ //递归结束条件 if(root == null){return 0;} //根节点不为空时加1 if(root.leftNode == null){return depthOfTree(root.rightNode)+1;}if(root.rightNode == null){return depthOfTree(root.leftNode)+1;} //左右子节点都不为空,返回左右子树的最大深度加1 return MaxDepth(depthOfTree(root.leftNode), depthOfTree(root.rightNode))+1;}private int MaxDepth(int a, int b){return a>b?a:b;}} }
相关文章推荐
- java 求二叉树最大深度算法
- 97. 二叉树的最大深度--java
- Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度 [java]
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- Java实现二叉树的先序、中序、后序、层次遍历,数的最大深度、最大宽度
- [Java代码] [Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度
- Java代码分别用递归和非递归方式计算二叉树的最大深度
- 【leetcode Java】二叉树的递归遍历以及最大深度的求解(Java)
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- [LeetCode系列] 二叉树最大深度求解问题(C++递归解法)
- Java二叉树排序及任意两点个节点间的最大距离
- java 实现二叉树深度优先遍历的 前、中、后序遍历(递归)
- 树的最大深度 leecode java
- LeetCode OJ 之 Maximum Depth of Binary Tree (二叉树的最大深度)
- 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java
- LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
- LeetCode 刷题之二:寻找二叉树的最大深度
- 求二叉树的深度和宽度[Java]
- 二叉树的最大深度与最小深度
- LeetCode----Maximum Depth of Binary Tree 求二叉树最大深度