【Leetcode】101. 对称二叉树、104. 二叉树的最大深度、226. 翻转二叉树

简介: 【Leetcode】101. 对称二叉树、104. 二叉树的最大深度、226. 翻转二叉树

作者:一个喜欢猫咪的的程序员

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》

目录

101. 对称二叉树

104. 二叉树的最大深度

226. 翻转二叉树


101. 对称二叉树

101. 对称二叉树

https://leetcode.cn/problems/symmetric-tree/


题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例:


思路:

可以让左子树跟右子树比较,让左子树的左节点和右子树的右节点作比较。让左子树的右节点和右子树的左节点作比较。 递归循环就可以完成。


代码实现:

bool _isSymmetric(struct TreeNode* root1,struct TreeNode* root2)
 {
     if(root1==NULL&&root2==NULL)
     return true;
     if(root1==NULL||root2==NULL)
     return false;
     if(root1->val!=root2->val)
     return false;
     return _isSymmetric(root1->left,root2->right)&&_isSymmetric(root1->right,root2->left);
 }
bool isSymmetric(struct TreeNode* root){
    return _isSymmetric(root->left,root->right);
}


104. 二叉树的最大深度


104. 二叉树的最大深度

https://leetcode.cn/problems/maximum-depth-of-binary-tree/


题目描述:


给定一个二叉树,找出其最大深度。


二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。


说明: 叶子节点是指没有子节点的节点。


示例:


思路:

可参考我的另外一篇博客(数的高度部分): http://t.csdn.cn/MQd0j


代码实现:

int TreeHeight(struct TreeNode* root)
{
  if (root == NULL)
    return 0;
  int left = TreeHeight(root->left);
  int right = TreeHeight(root->right);
  return left > right ? left+1 : right+1;
}
int maxDepth(struct TreeNode* root){
    return TreeHeight(root);
}

226. 翻转二叉树


226. 翻转二叉树

https://leetcode.cn/problems/invert-binary-tree/


题目描述:

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。


示例:

思路:

让左右节点交换地址,递归下去。


代码实现:

struct TreeNode* invertTree(struct TreeNode* root){
    if(root)
    {
        if(root->left||root->right)
        {
          struct TreeNode*tmp=root->left;
          root->left=root->right;
          root->right=tmp;
          invertTree(root->left);
          invertTree(root->right);
        }
    }
  return root;
}




相关文章
|
1月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
41 6
|
1月前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
|
1月前
|
算法 Java
LeetCode第94题二叉树的中序遍历
文章介绍了LeetCode第94题"二叉树的中序遍历"的解法,使用递归实现了中序遍历的过程,遵循了"左根右"的遍历顺序,并提供了清晰的Java代码实现。
LeetCode第94题二叉树的中序遍历
|
1月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
36 7
|
1月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - II. 从上到下打印二叉树 II
本文提供了一种Python实现方法,用于层次遍历二叉树并按层打印结果,每层节点按从左到右的顺序排列,每层打印到一行。
28 3
|
1月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - I. 从上到下打印二叉树
本文介绍了使用Python实现从上到下打印二叉树的解决方案,采用层次遍历的方法,利用队列进行节点的访问。
29 2
|
1月前
|
Python
【Leetcode刷题Python】257. 二叉树的所有路径
LeetCode第257题"二叉树的所有路径"的Python语言解决方案,通过深度优先搜索算法来找到并返回所有从根节点到叶子节点的路径。
20 2
|
1月前
|
Python
【Leetcode刷题Python】111. 二叉树的最小深度
LeetCode第111题"二叉树的最小深度"的Python语言解决方案,通过递归计算从根节点到最近叶子节点的最短路径上的节点数量。
14 2
|
1月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
60 0
|
1月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
32 0