175. 翻转二叉树
翻转一棵二叉树。左右子树交换。
样例
样例 1:
输入: {1,3,#}
输出: {1,#,3}
解释:
1 1
/ => \
3 3
样例 2:
输入: {1,2,3,#,#,4}
输出: {1,3,2,#,4}
解释:
1 1
/ \ / \
2 3 => 3 2
/ \
4 4
挑战
递归固然可行,能否写个非递归的?
void invertBinaryTree(TreeNode * root) {
// write your code here
std::queue<TreeNode * >qTree ;
if(NULL == root)
return;
qTree.push(root);
while(qTree.size() >0 )
{
TreeNode * node = qTree.front();
qTree.pop();
//std::cout<<qTree.size()<<endl;
if(node->left)
qTree.push(node->left);
if(node->right)
qTree.push(node->right);
TreeNode * tmp = node->left;
node->left=node->right;
node->right = tmp;
}
}