题目:
Invert a binary tree.
4
/ \
2 7
/ \ / \
1 3 6 9
to
4
/ \
7 2
/ \ / \
9 6 3 1
题意:
将一棵二叉树反转,因为有两种方法,我考虑用非递归的方法来实现。也就是考虑用一个队列LinkedList,然后先将节点依次压入队列中,然后再依次将其pop出现将左子树节点和右字数节点互换。已达到反转的目的。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution
{
public static TreeNode invertTree(TreeNode root)
{
LinkedList<TreeNode> nodes = new LinkedList<TreeNode>();
if(root == null)
return root;
nodes.push(root);
while(!nodes.isEmpty())
{
TreeNode curr = nodes.peek();
nodes.poll();
TreeNode pleft = curr.right;
curr.right = curr.left;
curr.left = pleft;
if(curr.left != null)
nodes.push(curr.left);
if(curr.right != null)
nodes.push(curr.right);
}
return root;
}
}
此题与之前的二叉树的一些基本的操作雷同,都是用LinkedList来实现层次遍历,然后实现再实现相应的操作。