NC16 判断二叉树是否对称
NC16 判断二叉树是否对称
- 题目描述:
- 设计思想:
同NC15求二叉树的层序遍历那道题目,仍然是使用BFS的思想,每一次都去遍历每一层的节点然后进行比较。详细操作如下:
操作流程如下:
- 代码:
c++版本:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
bool isSymmetric(TreeNode* root) {
if(root == NULL) return true;//当根节点为空的时候返回true
queue<TreeNode*>q;//定义一个队列,用于存储每一层的节点
q.push(root->left);//把根节点的左孩子放队列
q.push(root->right);//把根节点的右孩子放队列
while(!q.empty()){//队列不为空就执行下面的操作
TreeNode *node1 = q.front();//取出队列的头元素
q.pop();//出队列
TreeNode *node2 = q.front();//取出队列的头元素
q.pop();//出队列
if(node1 == NULL && node2 == NULL) continue;//当前取出的两个节点都为空的时候继续
if(node1 == NULL || node2 == NULL || node1->val != node2->val) return false;//取出的两个节点有一个为空或者值不相等都返回false
//通过看图会发现节点的左孩子对应另一个节点的右孩子
//节点的右孩子对应另一个节点的左孩子
q.push(node1->left);
q.push(node2->right);
q.push(node1->right);
q.push(node2->left);
}
return true;
}
};
Java版本:
import java.util.*;
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
Java岗位面试真题宝典 文章被收录于专栏
本面试宝典均来自校招面试题目大数据进行的整理

上海得物信息集团有限公司公司福利 1254人发布