本文主要是介绍10.7(101. 对称二叉树 104. 二叉树的最大深度 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
101. 对称二叉树(通过)
思路:利用第100道题目的思路即可
效率:55.12%
第一次编写程序的时候编写的是对称的,而不是镜像对称的,程序代码如下
程序代码:
class Solution {public:bool isSymmetric(TreeNode* root) {if (root==NULL||root->left == NULL && root->right == NULL) return true;else if (root->left != NULL && root->right != NULL)return isSameTree(root->left,root->right);else return false;}bool isSameTree(TreeNode* p, TreeNode* q) {if (p == NULL && q == NULL) return true;else if (p != NULL && q != NULL)return p->val == q->val&&isSameTree(p->left, q->left) && isSameTree(p->right, q->right);else return false;}};
只需要把左子树等于左子树更改成为左子树等于右子树即可啦~~
经过更改改编成了镜像对称的,程序代码如下:
程序代码:
class Solution {public:bool isSymmetric(TreeNode* root) {if (root==NULL||root->left == NULL && root->right == NULL) return true;else if (root->left != NULL && root->right != NULL)return isSameTree(root->left,root->right);else return false;}bool isSameTree(TreeNode* p, TreeNode* q) {if (p == NULL && q == NULL) return true;else if (p != NULL && q != NULL)return p->val == q->val&&isSameTree(p->left, q->right) && isSameTree(p->right, q->left);else return false;}};
104. 二叉树的最大深度(通过)
思路:很简单的思路,递归
效率:99.95%
程序代码:
class Solution {public:int maxDepth(TreeNode* root) {if (root == NULL) return 0;else return max(maxDepth(root->left),maxDepth(root->right))+1;}};
啊,递归真是美好又简短~~~
补充知识点:
二叉搜索树是指左子树的的各个节点都小于根节点,右子树的各个节点都大于根节点。
这篇关于10.7(101. 对称二叉树 104. 二叉树的最大深度 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!