题意很简单 只是单纯的翻转二叉树而已
一开始很蠢,我竟然还想创建一个新的二叉树。
后面看到了题解,只是交换子结点就行了。
交换子结点
题目的本质就是swap子节点。
我们只需要遍历一个节点 然后交换它的子节点就行了
遍历的方法
前序遍历
//将每一个节点的子节点翻转就行
void travelnode(TreeNode * root){
if(root==nullptr)return ;//递归的格式 写出递归结束的条件
swap(root->left,root->right);
travelnode(root->left);
travelnode(root->right);
}
后序遍历
void travelnode(TreeNode * root){
if(root==nullptr)return ;//递归的格式 写出递归结束的条件
swap(root->left,root->right);
travelnode(root->left);
travelnode(root->right);
}
中序遍历是不行的 会出现 翻转过来再反转过去的情况
总结
其实本体考察的是 二叉树遍历 二叉树遍历的选择 这就考察到二叉树遍历的知识
仅仅会二叉树遍历不行 更要理解每一种遍历方法的做法
而且一定要理解本题 这题简单说就是让你交换子结点 一定要意识到 这是交换子结点的题目