算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)

Posted 二当家的白帽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)相关的知识,希望对你有一定的参考价值。


文章目录


剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度:

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

样例 1:

给定二叉树 [3,9,20,null,null,15,7],
	
	3
   / \\
  9  20
    /  \\
   15   7
	
返回它的最大深度 3 。

提示:

  • 节点总数 <= 10000

分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 使用层序遍历或者递归都可以,感觉递归套娃大法更加直观。

题解

rust

// Definition for a binary tree node.
// #[derive(Debug, PartialEq, Eq)]
// pub struct TreeNode 
//   pub val: i32,
//   pub left: Option<Rc<RefCell<TreeNode>>>,
//   pub right: Option<Rc<RefCell<TreeNode>>>,
// 
// 
// impl TreeNode 
//   #[inline]
//   pub fn new(val: i32) -> Self 
//     TreeNode 
//       val,
//       left: None,
//       right: None
//     
//   
// 
use std::rc::Rc;
use std::cell::RefCell;
impl Solution 
    pub fn max_depth(root: Option<Rc<RefCell<TreeNode>>>) -> i32 
        match root 
            Some(root) => 
                1 + Solution::max_depth(root.borrow().left.clone()).max(Solution::max_depth(root.borrow().right.clone()))
            
            _ => 
                0
            
        
    


go

/**
 * Definition for a binary tree node.
 * type TreeNode struct 
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * 
 */
func maxDepth(root *TreeNode) int 
    if root != nil 
		maxLeftDepth := maxDepth(root.Left)
		maxRightDepth := maxDepth(root.Right)
		if maxLeftDepth > maxRightDepth 
			return 1 + maxLeftDepth
		 else 
			return 1 + maxRightDepth
		
	
	return 0


c++

/**
 * Definition for a binary tree node.
 * struct TreeNode 
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) 
 * ;
 */
class Solution 
public:
    int maxDepth(TreeNode* root) 
        if (root) 
            return 1 + max(maxDepth(root->left), maxDepth(root->right));
        
        return 0;
    
;

java

/**
 * Definition for a binary tree node.
 * public class TreeNode 
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x)  val = x; 
 * 
 */
class Solution 
    public int maxDepth(TreeNode root) 
        if (root != null) 
			return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
		
		return 0;
    


python

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root:
            return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
        return 0


原题传送门:https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/

原题传送门:https://leetcode.cn/problems/maximum-depth-of-binary-tree/


非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


以上是关于算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)的主要内容,如果未能解决你的问题,请参考以下文章

算法leetcode|剑指 Offer 55 - I. 二叉树的深度|104. 二叉树的最大深度(rust和go)

剑指offer刷题排序算法

剑指 Offer 55 - II. 平衡二叉树

leetcode-剑指 Offer 55 - II平衡二叉树

LeetCode664. 奇怪的打印机 / 剑指 Offer 55 - I. 二叉树的深度 / 剑指 Offer 55 - II. 平衡二叉树

[LeetCode]剑指 Offer 55 - I. 二叉树的深度