leetcode第一刷_Symmetric Tree
必须承认,一開始这道题我是不会做的。由于我心目中的树遍历仅仅能用一个节点发起。多么天真而无知。
我想不通如何同一时候遍历两颗子树。由于根节点一定是一个啊。但是,作为对称轴上的它。从一開始就不应该被考虑,他的左右孩子,不是非常自然的形成了两个遍历的入口吗?可见无知是多么的可怕。
bool helper(TreeNode *left, TreeNode *right){
    if(left == NULL && right == NULL)
        return true;
    if(left == NULL || right == NULL || left->val != right->val)
        return false;
    return helper(left->left, right->right) && helper(left->right, right->left);
}
class Solution {
public:
    bool isSymmetric(TreeNode *root) {
        if(root == NULL)
            return true;
        return helper(root->left, root->right);
    }
};
leetcode第一刷_Symmetric Tree的更多相关文章
- leetcode第一刷_Binary Tree Inorder Traversal
		
递归实现当然太简单,也用不着为了ac走这样的捷径吧..非递归实现还挺有意思的. 树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来.对于中序遍历,先要訪问最左下的节点,一定是进入循环后 ...
 - leetcode第一刷_Binary Tree Zigzag Level Order Traversal
		
以出现的频率来看.树的层序遍历一定是考察的重点,除非工作人员想找题水数量. zigzag,还是有几道题的,层序的这个非常easy,假设是奇数层.reverse下面就可以.无他.我写的时候预计还不知道这 ...
 - leetcode第一刷_Same Tree
		
回来更博客的时候才发现.这道题不是跟推断树是不是对称的很相像吗.这个也是用了两个指针同一时候递归啊,有时候思维的局限真可笑. class Solution { public: bool isSameT ...
 - leetcode第一刷_Validate Binary Search Tree
		
有了上面的教训,这道题就简单多了,什么时候该更新pre是明白的了,倒是有个细节,二叉搜索树中是不同意有相等节点的,所以题目的要求用黑体字标明了.写的时候注意就能够了. class Solution { ...
 - leetcode第一刷_Construct Binary Tree from Preorder and Inorder Traversal
		
构造方式跟中序与后序全然一样,并且一般都习惯正着来,所以更简单. 代码是之前写的,没实用库函数,不应该. TreeNode *buildIt(vector<int> &preord ...
 - leetcode第一刷_Construct Binary Tree from Inorder and Postorder Traversal
		
这道题是为数不多的感觉在读本科的时候见过的问题. 人工构造的过程是如何呢.兴许遍历最后一个节点一定是整棵树的根节点.从中序遍历中查找到这个元素,就能够把树分为两颗子树,这个元素左側的递归构造左子树,右 ...
 - leetcode第一刷_Convert Sorted List to Binary Search Tree
		
好,二叉搜索树粉末登场,有关他的问题有这么几个,给你一个n,如何求全部的n个节点的二叉搜索树个数?能不能把全部的这些二叉搜索树打印出来? 这道题倒不用考虑这么多,直接转即可了,我用的思想是分治,每次找 ...
 - leetcode第一刷_Maximum Depth of Binary Tree
		
这道题预计是ac率最高的一道了.你当然能够用层序遍历,我佩服你的耐心和勇气.由于看到别人的三行代码,会不会流眼泪呢.. class Solution { public: int maxDepth(Tr ...
 - leetcode第一刷_ Flatten Binary Tree to Linked List
		
提示中说明了,改动后的链表相当于原树的前序遍历结果.前序遍历是根左右,因为要把转换后的左子树链接到根节点的右子树上,因此进入递归之后要先把节点的右子树保存下来,然后进入左子树,左子树转换后应该返回最后 ...
 
随机推荐
- Android内存使用——垃圾回收LOG,GC_CONCURRENT等的意义的说明
			
在调试程序的时候,经常发现GC_CONCURRENT之类的打印.在网上搜了一下,感觉说法各式各样.最后,在Google的官方网站上发现了详细介绍. Every time a garbage colle ...
 - 【bzoj2724】[Violet 6]蒲公英  分块+STL-vector
			
题目描述 输入 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 输出 样例输入 6 3 1 2 3 2 1 2 1 5 3 ...
 - BZOJ1875 [SDOI2009]HH去散步  【dp + 矩阵优化】
			
题目 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变 ...
 - 转 PV操作简单理解
			
传送门 PV操作简单理解 进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转换,三者之间的转换关系如下: 进程三个状态之间的转换就是靠PV操作来控制的.PV操作主要就是P操作.V操作 ...
 - Linux 之 服务以及进程
			
服务以及进程 参考教程:[千峰教育] 命令: vmstat: 结果: procs -----------memory---------- ---swap-- -----io---- --system- ...
 - 正确使用‘trap指令’实现Docker优雅退出
			
一般应用(比如mariadb)都会有一个退出命令,用户使用类似systemctl stop ****.service方法,停止其服务时,systemd会调用其配置文件注册的退出命令,该命令执行清理资源 ...
 - hdu 5019(第K大公约数)
			
Revenge of GCD Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
 - AC日记——【模板】二分图匹配 洛谷 P3386
			
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
 - AC日记——[福利]可持久化线段树 cogs 2554
			
2554. [福利]可持久化线段树 ★★☆ 输入文件:longterm_segtree.in 输出文件:longterm_segtree.out 简单对比时间限制:3 s 内存限制:2 ...
 - LA 3708 Graveyard
			
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...