Redian新闻
>
urban decay naked 还有草这个的姐妹吗?
avatar
urban decay naked 还有草这个的姐妹吗?# Fashion - 美丽时尚
k*a
1
我只做出来了recursive的方法,请问迭代的方法怎么做?
谢谢!
avatar
s*e
2
现在官网上有了..刚帮国内的姐妹定了一个...准备夏天回国带给她.
avatar
c*e
3
所有recursive的题都能用stack做 你要熟悉啊
tripadvisor考到过
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSymmetric(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(root==NULL)return true;
if(root->left==NULL||root->right==NULL){
if(root->left==NULL&&root->right==NULL)return true;
return false;
}
stack s1,s2;
s1.push(root->left);
s2.push(root->right);
while(!s1.empty()&&!s2.empty()){
TreeNode *n1=s1.top(),*n2=s2.top();
s1.pop();s2.pop();
if(n1->val!=n2->val)return false;
if(n1->left!=NULL&&n2->right!=NULL){
s1.push(n1->left);
s2.push(n2->right);
}
else if(n1->left!=NULL||n2->right!=NULL)
return false;
if(n1->right!=NULL&&n2->left!=NULL){
s1.push(n1->right);
s2.push(n2->left);
}
else if(n1->right!=NULL||n2->left!=NULL)
return false;
}
return true;
}
};
avatar
p*y
4
我一会儿长草一会儿拔草来来去去好几回了
忍住了不买
UD家的盘太多了,也不缺这一个
avatar
k*a
5
你好牛!
谢了!

【在 c*******e 的大作中提到】
: 所有recursive的题都能用stack做 你要熟悉啊
: tripadvisor考到过
: /**
: * Definition for binary tree
: * struct TreeNode {
: * int val;
: * TreeNode *left;
: * TreeNode *right;
: * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
: * };

avatar
j*0
6
我用的bst,思想就是左子树放一个队列右子树以反方向放一个队列,然后从队列中抽
出脑袋的时候比比。
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
Queue left_q = new LinkedList();
Queue right_q = new LinkedList();
left_q.offer(root.left);
right_q.offer(root.right);
while (!left_q.isEmpty() && !right_q.isEmpty()) {
TreeNode left = left_q.poll();
TreeNode right = right_q.poll();
if (left == null && right == null) {
continue;
} else if (left == null || right == null) {
return false;
} else {
if (left.val != right.val) {
return false;
}
left_q.offer(left.left);
left_q.offer(left.right);
right_q.offer(right.right);
right_q.offer(right.left);
}
}
return true;
}
avatar
k*a
7
你们两个都很强大!
前者用的c++,不知道后面那个用的什么语言啊?
avatar
j*0
8
java,我把前面class去掉了

【在 k*******a 的大作中提到】
: 你们两个都很强大!
: 前者用的c++,不知道后面那个用的什么语言啊?

avatar
I*s
9
也用stack. 简洁一些,也能过。
bool isSymmetric3(TreeNode * root) {
if (! root) return true;
stack s1, s2;
s1.push(root->left);
s2.push(root->right);

while(! s1.empty() && ! s2.empty()) {
TreeNode * n1 = s1.top(); s1.pop();
TreeNode * n2 = s2.top(); s2.pop();

if (!n1 && !n2) continue;
if (!n1 || !n2 || n1->val != n2->val) return false;

s1.push(n1->left);
s1.push(n1->right);
s2.push(n2->right);
s2.push(n2->left);
}
return true;
}
avatar
I*s
10
完全相同的结构,改用queue, 也能过:
bool isSymmetric(TreeNode * root) {
if (! root) return true;
queue s1, s2;
s1.push(root->left);
s2.push(root->right);

while(! s1.empty() && ! s2.empty()) {
TreeNode * n1 = s1.front(); s1.pop();
TreeNode * n2 = s2.front(); s2.pop();

if (!n1 && !n2) continue;
if (!n1 || !n2 || n1->val != n2->val) return false;

s1.push(n1->left);
s1.push(n1->right);
s2.push(n2->right);
s2.push(n2->left);
}
return true;
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。