LintCode 155: Minimum Depth of Binary Tree

博客围绕二叉树最小深度问题展开,给出多个示例说明不同输入下的输出结果。同时介绍了使用DFS(深度优先搜索)的解法,并指出直接编写代码存在的问题,如对于特定输入会返回错误结果。
  1. Minimum Depth of Binary Tree
    中文English
    Given a binary tree, find its minimum depth.

The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

Example
Example 1:

Input: {}
Output: 0
Example 2:

Input: {1,#,2,3}
Output: 3
Explanation:
1
\
2
/
3
it will be serialized {1,#,2,3}
Example 3:

Input: {1,2,3,#,#4,5}
Output: 2
Explanation:
1
/ \
2 3
/
4 5
it will be serialized {1,2,3,#,#,4,5}

解法1:DFS。
注意,直接写成
int minDepth(TreeNode * root) {
if (!root) return 0;
return min(minDepth(root->left), minDepth(root->right)) + 1;
}
不对,因为1,#,3这样的情况会返回1。

代码如下:

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param root: The root of binary tree
     * @return: An integer
     */
    int minDepth(TreeNode * root) {
        if (!root) return 0;
        if (!root->left) return minDepth(root->right) + 1;
        if (!root->right) return minDepth(root->left) + 1;
        return min(minDepth(root->left), minDepth(root->right)) + 1;
    }
};

二刷:

class Solution {
public:
    int minDepth(TreeNode* root) {
       if (!root) return 0;
       helper(root, 0);
       return min_depth;
    }
void helper(TreeNode* root, int depth) {
    if (!root) return;
    depth++;
    if (!root->left && !root->right) {
        min_depth = min(min_depth, depth);
        return;
    }
    
    helper(root->left, depth);
    helper(root->right, depth);    
    depth--;
}
private:
    int min_depth = INT_MAX;
};

也可以

class Solution {
public:
    int minDepth(TreeNode* root) {
       if (!root) return 0;
       helper(root, 1);
       return min_depth;
    }
void helper(TreeNode* root, int depth) {
    if (!root) return;
    if (!root->left && !root->right) {
        min_depth = min(min_depth, depth);
        return;
    }
    
    helper(root->left, depth + 1);
    helper(root->right, depth + 1);    
}
private:
    int min_depth = INT_MAX;
};
内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
nsert 2, 1, 4, 5, 9, 3, 6, 7 into an initially empty AVL tree. Which one of the following statements is FALSE? A. 4 is the root B. 3 and 7 are siblings C. 2 and 6 are siblings D. 9 is the parent of 7 分数 3 作者 陈越 单位 浙江大学 如果AVL树的深度为5(空树的深度定义为0),则此树最少有多少个结点? A. 12 B. 20 C. 33 D. 64 分数 2 作者 徐镜春 单位 浙江大学 将 7, 8, 9, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的? A. 7 是根结点 B. 2 和 5 是兄弟 C. 有2个结点的平衡因子为-1 D. 3 是 4 的父结点 分数 2 作者 何钦铭 单位 浙江大学 For an AVL-tree of height 4, what is the minimum number of the tree nodes? (the height of one node tree is 0) A. 11 B. 12 C. 14 D. 15 分数 2 作者 何钦铭 单位 浙江大学 During inserting { 42, 26, 8, 70, 102, 56, 2} into an initially empty AVL tree, which of the following statements is true? A. The resulted AVL tree is also a completed binary tree; B. There are 4 rotations: LL,RR,LR,LL C. There are 4 rotations: LL,RR,LL,RL D. There are 3 rotations: LL,RR,RL 分数 2 作者 何钦铭 单位 浙江大学 When inserting 1, 2, 3, 6, 5, and 4 one by one into an initially empty AVL tree,which kinds of rotations will be encountered? A. Two RR's and one RL B. One RR, one RL, and one LR C. One RR and two RL's D. Two RR's and one LR 分数 2 作者 陈越 单位 浙江大学 将 26, 13, 44, 51, 98, 37, 66, 73 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的? A. 44 是根结点 B. 37 和 73 是兄弟 C. 26 和 66 是兄弟 D. 26 是 13 的父结点 分数 2 作者 何钦铭 单位 浙江大学 将一系列数字顺序一个个插入一棵初始为空的AVL树。下面哪个系列的第一次旋转是“右-左”双旋? A. 1,2,3,4,5,6 B. 6,5,4,3,2,1 C. 4,2,5,6,3,1 D. 3,1,4,6,5,2 分数 2 作者 考研真题 单位 浙江大学 Delete a node v from an AVL tree T1​, we can obtain another AVL tree T2​. Then insert v into T2​, we can obtain another AVL tree T3​. Which one(s) of the following statements about T1​ and T3​ is(are) true? I、If v is a leaf node in T1​, then T1​ and T3​ might be different. II、If v is not a leaf node in T1​, then T1​ and T3​ must be different. III、If v is not a leaf node in T1​, then T1​ and T3​ must be the same. A. I only B. II only C. I and II only D. I and III only 分数 2 作者 何钦铭 单位 浙江大学 Insert 28, 23, 54, 61, 98, 37 into an initially empty AVL tree first. Then immediately insert one of the following keys. Which one will cause an RL rotation? A. 10 B. 30 C. 60 D. 70 分数 2 作者 何钦铭 单位 浙江大学 Insert 28, 23, 54, 61, 98, 37 into an initially empty AVL tree first. Then immediately insert one of the following keys. Which one will cause an RL rotation? A. 10 B. 50 C. 80 D. 100 分数 3 作者 陈越 单位 浙江大学 If there are 14 nodes in an AVL tree, then the maximum depth of the tree is ____. The depth of an empty tree is defined to be 0. A. 3 B. 4 C. 5 D. 6 分数 3 作者 陈越 单位 浙江大学 If there are 28 nodes in an AVL tree, then the maximum depth of the tree is ____. The depth of an empty tree is defined to be -1. A. 3 B. 4 C. 5 D. 6 分数 3 作者 DS课程组 单位 浙江大学 If the depth of an AVL tree is 6 (the depth of an empty tree is defined to be -1), then the minimum possible number of nodes in this tree is: A. 13 B. 17 C. 20 D. 33 分数 2 作者 101 数据结构团队 单位 101计划 给定关键词输入序列 { CAP, AQU, PIS, ARI, TAU, GEM, CAN, LTB, VIR, LEO, SCO },,试按表中元素的次序,依次插入一棵初始为空的 AVL 树(字符之间以字典顺序比较大小)。则关于最后产生的 AVL 树,哪句描述是错误的? A. 在形成结果树的过程中,涉及 2 次旋转调整 B. LTB 是 GEM 的父结点 C. PIS 是 TAU 的父结点 D. CAP 是根结点
10-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值