Invert Binary Tree
- 题目来源:
leetcode 226
名人轶事:
该题曾是goole的一道面试题;当年Max Howell (Homebrew的作者)面试时没有做出该题而被 Google 拒绝。
goole给Max Howell的回复是:
Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
算法实现
TreeNode* invertTree(TreeNode* root) { //先序遍历
if (root==NULL) {
return root;
}
else{
TreeNode * temp = root->left;
root->left = root->right;
root->right = temp;
root->left = invertTree(root->left);
root->right = invertTree(root->right);
return root;
}
}
TreeNode* invertTree(TreeNode* root) { //中序遍历
if (root==NULL) {
return root;
}
else{
root->left = invertTree(root->left);
TreeNode * temp = root->left;
root->left = root->right;
root->right = temp;
root->left = invertTree(root->left);
return root;
}
}
TreeNode* invertTree(TreeNode* root) { //后序遍历
if (root==NULL) {
return root;
}
else{
TreeNode * left = invertTree(root->left);
TreeNode * right = invertTree(root->right);
root->left = right;
root->right = left;
return root;
}
}
TreeNode* invertTree(TreeNode* root) { //层序遍历
if (root==NULL) {
return root;
}
else{
queue<TreeNode *> Q;
Q.push(root);
while (!Q.empty()) {
TreeNode * top = Q.front();
Q.pop();
if(top->right!=NULL) Q.push(top->right);
if(top->left!=NULL) Q.push(top->left);
TreeNode * temp = top->left;
top->left = top->right;
top->right = temp;
}
return root;
}
}
算法分析
先中后序遍历:
层次遍历: