leetcodey -day25 Binary Tree Level Order Traversal & Symmetric Tree & Same Tree
来源:互联网 发布:php日志文件在哪 编辑:程序博客网 时间:2024/06/05 04:46
1、
Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
class Solution {public: vector<vector<int> > levelOrder(TreeNode *root) { vector<vector<int> > result; queue<TreeNode*> nodeLevel; queue<TreeNode*> newNodeLevel; vector<int> nodeVec; if(root){ nodeLevel.push(root); while(!nodeLevel.empty()){ nodeVec.clear(); while(!nodeLevel.empty()){ TreeNode* node = nodeLevel.front(); nodeLevel.pop(); nodeVec.push_back(node->val); if(node->left){ newNodeLevel.push(node->left); } if(node->right){ newNodeLevel.push(node->right); } } if(!nodeVec.empty()){ result.push_back(nodeVec); } nodeLevel.swap(newNodeLevel); } } return result; }};
2、Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
分析:对于二叉树一般采用递归的方法,判断是否是镜像映射,可以采用判断对应的左子树是否和右子树相同的方法来进行判断。
class Solution {public: bool isSymmetric(TreeNode *root) { if(!root){ return true; } return isSame(root->left,root->right); } bool isSame(TreeNode* root1, TreeNode* root2){ if(!root1 && !root2){ return true; } if(root1 && root2){ if(root1->val != root2->val){ return false; } bool isLeft = isSame(root1->left,root2->right); bool isRight = isSame(root1->right,root2->left); if(isLeft && isRight){ return true; } } return false; }};
3、Same Tree
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
class Solution {public: bool isSameTree(TreeNode *p, TreeNode *q) { if(!p && !q){ return true; } if(p && q){ if(p->val != q->val){ return false; } bool isLeft = isSameTree(p->left,q->left); bool isRight = isSameTree(p->right,q->right); if(isLeft && isRight){ return true; } } return false; }};
0 0
- leetcodey -day25 Binary Tree Level Order Traversal & Symmetric Tree & Same Tree
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- release版本和Debug 版本的问题 终结
- 15周【项目2-用文件保存的学生名单】
- OCP 1Z0 051 QUESTION NO: 13
- Santoku(Androguard)安装问题
- Array_Max_Divide
- leetcodey -day25 Binary Tree Level Order Traversal & Symmetric Tree & Same Tree
- HDU 1011 - Starship Troopers (树形DP)
- SQL查找表是否存在
- arm各种模式应用
- 滑动到页面底端自动加载下一页方法
- POJ 2411 Mondriaan's Dream
- 【转】中断服务下半部之工作队列详解
- populate_dir
- JVM调优总结(七)——典型配置举例1