100、101、104-递归

来源:互联网 发布:web原型设计工具 知乎 编辑:程序博客网 时间:2024/05/16 10:54

类别:depth first search
难度:easy

100-Same Tree

给定两棵树的根节点,判断两棵树是否相同
只需要对空节点进行判断,然后分别递归判断左子树和右子树即可

class Solution {public:    bool isSameTree(TreeNode* p, TreeNode* q) {        if(p == NULL && q == NULL) return true;        if (p == NULL && q != NULL) return false;        if (p != NULL && q == NULL) return false;        if (p->val != q->val) return false;        return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);    }};

101-Symmetric Tree

判断一棵树是不是对称的二叉树
需要判断左子树的左节点的数值和右子树的右节点的数值是否相同以及左子树的右节点和右子树的左节点的数值是否相同

class Solution {public:    bool isSymmetric(TreeNode* root) {        if (root == NULL) return true;        return isSym(root->left, root->right);    }    bool isSym(TreeNode* left, TreeNode* right) {        if (left == NULL && right == NULL) return true;        if (left == NULL && right != NULL) return false;        if (left != NULL && right == NULL) return false;        if (left->val != right->val) return false;        return isSym(left->left, right->right) && isSym(left->right, right->left);    }};

104-Maximum Path of Binary Tree

得到二叉树的最大深度
递归左子树的深度和右子树的深度,然后取最大值即可

class Solution {public:    int maxDepth(TreeNode* root) {        if (root == NULL) return 0;        return max(maxDepth(root->left) + 1, maxDepth(root->right)+1);    }};
原创粉丝点击