您的位置:首页 > 科技 > 能源 > LeetCode面试题Day19|LC104 二叉树的最大深度

LeetCode面试题Day19|LC104 二叉树的最大深度

2024/10/6 6:50:32 来源:https://blog.csdn.net/m0_74174715/article/details/141635479  浏览:    关键词:LeetCode面试题Day19|LC104 二叉树的最大深度

题目1:

指路:. - 力扣(LeetCode)104 二叉树的最大深度

思路与分析:

求最大深度这里我们分别找到左子树和右子树的最大深度,当左右节点为空时停止递归,最后返回左右子树的较大深度,不要忘记最后加上根节点。

代码:

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

题目2:

指路:. - 力扣(LeetCode)100 相同的树

思路与分析:

相同的树要求为两点:结构相同,节点值相同。而结构相同有两种情况,都为空或者是不为空的情况下结构相同,节点值相同则要求每个节点对于的值都相同。条件不满足则返回false,否则返回true。

代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool isSameTree(TreeNode* p, TreeNode* q) {if (p == nullptr && q == nullptr) {return true;} else if (p == nullptr || q == nullptr) {return false;} else if (p->val != q->val) {return false;} else {return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);}}
};

还有一种结合性较强的代码,给大家注释了一下,了解即可。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool isSameTree(TreeNode* p, TreeNode* q) {return !p || !q ? p == q : isSameTree(p->left, q->left) && isSameTree(p->right, q->right)&& p->val == q->val;// 判断当p或q二者有一个为空时,判断二者是否相同,相同则说明二者都为空,返回true,// 否则,将返回p的left和q的left,这里需要同时满足三个条件:// 1.p的左子树==q的左子树// 2.p的右子树==q的右子树// 3.p和q对应的节点值相等// 满足以上三个条件才能返回第二种true,否则为false}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com