主页 > 人工智能  > 

leetCode100.相同的树和leetCode101.对称二叉树和110.平衡二叉树和199.二叉树的右视图

leetCode100.相同的树和leetCode101.对称二叉树和110.平衡二叉树和199.二叉树的右视图

1.leetCode 100. 相同的树

C++代码:

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

Python代码: 

class Solution: def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: if p is None or q is None: return p is q return p.val == q.val and self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)

2.leetCode 101. 对称二叉树力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

C++代码: 

class Solution { public: bool isSameTree(TreeNode* p,TreeNode* q) { if(p == nullptr || q == nullptr) return p==q; return p->val == q->val && isSameTree(p->left,q->right) && isSameTree(p->right,q->left); } bool isSymmetric(TreeNode* root) { if(root==nullptr) return true; TreeNode* p = root->left; TreeNode* q = root->right; return isSameTree(p,q); } };

 Python代码: 

class Solution: def isSameTree(self,p:Optional[TreeNode],q:Optional[TreeNode]) -> bool: if p is None or q is None: return p is q return p.val == q.val and self.isSameTree(p.left,q.right) and self.isSameTree(p.right,q.left) def isSymmetric(self, root: Optional[TreeNode]) -> bool: return self.isSameTree(root.left,root.right)

3.leetCode 110.平衡二叉树 leetcode /problems/balanced-binary-tree/description/

C++代码:

class Solution { public: int getHeight(TreeNode* root) { if(root==nullptr) return 0; int LH = getHeight(root->left); if(LH == -1) return -1; int RH = getHeight(root->right); if(RH == -1 or abs(RH-LH) > 1) return -1; return max(LH,RH)+1; } bool isBalanced(TreeNode* root) { return getHeight(root)!=-1; } };

Python代码:

class Solution: def isBalanced(self, root: Optional[TreeNode]) -> bool: def get_height(node): if node is None: return 0 LH = get_height(node.left) if LH == -1: return -1 RH = get_height(node.right) if RH == -1 or abs(RH-LH) > 1: return -1 return max(LH,RH)+1 return get_height(root)!=-1

4.leetCode 199. 二叉树的右视图 leetcode /problems/binary-tree-right-side-view/description/

C++代码: 

class Solution { public: vector<int> ans; void dfs(TreeNode* node,int depth) { if(node==nullptr) return; if(depth == ans.size()) ans.push_back(node->val); dfs(node->right,depth+1); dfs(node->left,depth+1); } vector<int> rightSideView(TreeNode* root) { dfs(root,0); return ans; } };

Python代码: 

class Solution: def rightSideView(self, root: Optional[TreeNode]) -> List[int]: ans = [] def f(node,depth): if node is None: return if depth == len(ans): ans.append(node.val) f(node.right,depth+1) f(node.left,depth+1) f(root,0) return ans

参考和推荐文章、视频:

如何灵活运用递归?【基础算法精讲 10】_哔哩哔哩_bilibili

100. 相同的树 leetcode /problems/same-tree/solutions/2015056/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-empk/

101. 对称二叉树 leetcode /problems/symmetric-tree/solutions/2015063/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-6dq5/

110. 平衡二叉树 leetcode /problems/balanced-binary-tree/solutions/2015068/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-c3wj/

199. 二叉树的右视图 leetcode /problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/ 

标签:

leetCode100.相同的树和leetCode101.对称二叉树和110.平衡二叉树和199.二叉树的右视图由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“leetCode100.相同的树和leetCode101.对称二叉树和110.平衡二叉树和199.二叉树的右视图