目录
102.二叉树的层序遍历(先空着)
题目链接:力扣
题目描述:给你二叉树的根节点 root
,返回其节点值的 层序遍历 。
真的嫌C麻烦,等学学C++再写。
226.翻转二叉树
题目链接:力扣
示例如下:
递归翻转每个结点的左右结点。
struct TreeNode* invertTree(struct TreeNode* root){
//递归结束条件
if(!root) return root;
//temp作为临时变量交换结点
struct TreeNode* temp=root->left;
root->left=root->right;
root->right=temp;
//递归反转左子树
invertTree(root->left);
//递归反转右子树
invertTree(root->right);
return root;
}
101.对称二叉树
题目链接:力扣
示例如下:称为对称二叉树。
题目规定结点个数>1,因此把根节点的左子树和右子树拆分成两个二叉树。
关键在于找出规律,也就是:scan(p->left,q->right)&&scan(p->right,q->left)
bool scan(struct TreeNode* p,struct TreeNode* q){
//结点都为空返回true
if(!p&&!q) return true;
//两个节点其中一个为空一定不对称
//两个节点的值不相等一定不对称
if(!p||!q||(p->val!=q->val)) return false;
//左右节点要交错相等
return scan(p->left,q->right)&&scan(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
return scan(root->left,root->right);
}