题目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}
};