3.剑指Offer之二叉树的深度

    技术2025-08-08  12

    目录

    1.题目描述:2.解题思路:3.编程实现(Java):

    1.题目描述:

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

    2.解题思路:

      本题相对比较简单。根据二叉树深度的定义,我们有以下理解:如果一棵树只有一个结点,那么它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度为其左子树深度加1;相反,如果根结点只有右子树而没有左子树,那么深度为右子树深度加1;如果既有左子树又有右子树,那么该树的深度为左、右子树深度的较大值加1。

      因此,很明显本题应该使用递归的思路来解决。。      

    3.编程实现(Java):

    public class BinaryTreeDepth_3 { public static void main(String[] args) { TreeLinkNode root = new TreeLinkNode(1); TreeLinkNode node2 = new TreeLinkNode(2); TreeLinkNode node3 = new TreeLinkNode(3); TreeLinkNode node4 = new TreeLinkNode(4); TreeLinkNode node5 = new TreeLinkNode(5); TreeLinkNode node6 = new TreeLinkNode(6); TreeLinkNode node7 = new TreeLinkNode(7); root.left = node2; root.right = node3; node2.left = node4; node2.right = node5; node5.left = node7; node3.right = node6; System.out.println(treeDepth(root)); } static int treeDepth(TreeLinkNode root) { if (root != null) { int left = treeDepth(root.left); int right = treeDepth(root.right); return left > right ? left + 1 : right + 1; } return 0; } static class TreeLinkNode { int val = 0; TreeLinkNode left = null; TreeLinkNode right = null; public TreeLinkNode(int val) { this.val = val; } } }
    Processed: 0.008, SQL: 9