LeetCode 101. Symmetric Tree
2016-10-18 18:41
399 查看
描述
判断一棵树是否对称解决
利用递归遍历该树,因为需要判断对称性,所以需要传入两个节点参数。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode* root) { if (!root) { return true; } else { return judge(root -> left, root -> right); } } bool judge(TreeNode* n1, TreeNode* n2) { if (!n1 && !n2) { return true; } else if ((!n1 && n2) || (n1 && !n2)) { return false; } else { return n1 -> val == n2 -> val && judge(n1 -> left, n2 -> right) && judge(n1 -> right, n2 -> left); } } };
看到一个队列实现的方法
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode* root) { queue<TreeNode*> que; if (!root) return true; que.push(root); que.push(root); TreeNode* l = NULL, *r = NULL; while (!que.empty()) { l = que.front(); que.pop(); r = que.front(); que.pop(); if (!l && !r) continue; else if ((!l && r) || (!r && l)) return false; else if (l -> val != r -> val) return false; que.push(l -> left); que.push(r -> right); que.push(l -> right); que.push(r -> left); } return true; } };
相关文章推荐
- LeetCode 101. Symmetric Tree
- [LeetCode] 101. Symmetric Tree
- 【LeetCode】101. Symmetric Tree 中序遍历,分支遍历,二叉树
- LeetCode 101. Symmetric Tree
- Leetcode 101. Symmetric Tree (Easy) (cpp)
- leetcode-101. Symmetric Tree
- leetcode 101. Symmetric Tree
- 【LeetCode】101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- Leetcode:101. Symmetric Tree(JAVA)
- LeetCode 101. Symmetric Tree 题解
- [leetcode] 101. Symmetric Tree
- LeetCode101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- 个人记录-LeetCode 101. Symmetric Tree
- leetcode -- 101. Symmetric Tree 【对称树,结构,内容】
- leetcode 101. Symmetric Tree
- LeetCode 100. Same Tree && 101. Symmetric Tree
- LeetCode 101. Symmetric Tree
- Leetcode 101. Symmetric Tree( C++版)