题目描述:
翻转一棵二叉树。
示例:
输入:
4 / \ 2 7 / \ / \ 1 3 6 9
输出:
4 / \ 7 2 / \ / \ 9 6 3 1
思路:使用队列进行一次深度遍历,每次将队列头节点的左右子树交换,直到队列为空。
代码如下:
public TreeNode InvertTree(TreeNode root) {
if (root == null)
return null;
Queue queue = new Queue();
queue.Enqueue(root);
while(queue.Count>0)
{
TreeNode pNode = (TreeNode)queue.Dequeue();
TreeNode temp = pNode.left;
pNode.left = pNode.right;
pNode.right = temp;
if (pNode.left != null)
queue.Enqueue(pNode.left);
if (pNode.right != null)
queue.Enqueue(pNode.right);
}
return root;
}