本文共 1080 字,大约阅读时间需要 3 分钟。
题目:
翻转一棵二叉树。
示例:
输入:
4 / \ 2 7 / \ / \1 3 6 9
输出:
4 / \ 7 2 / \ / \9 6 3 1
方法一:递归
//递归 public TreeNode invertTree(TreeNode root) { //递归函数的终止条件,节点为空时返回 if (root == null) { return null; }// 递归交换当前节点的左子树 TreeNode left = invertTree(root.left);// 递归交换当前节点的右子树 TreeNode right = invertTree(root.right);// 将当前节点的左右子树交换 root.right = left; root.left = right; return root; }
方法二:迭代
class Solution { public TreeNode invertTree(TreeNode root) { if(root==null) { return null; } //将二叉树中的节点逐层放入队列中,再迭代处理队列中的元素 LinkedListqueue = new LinkedList (); queue.add(root); while(!queue.isEmpty()) { //每次都从队列中拿一个节点,并交换这个节点的左右子树 TreeNode tmp = queue.poll(); TreeNode left = tmp.left; tmp.left = tmp.right; tmp.right = left; //如果当前节点的左子树不为空,则放入队列等待后续处理 if(tmp.left!=null) { queue.add(tmp.left); } //如果当前节点的右子树不为空,则放入队列等待后续处理 if(tmp.right!=null) { queue.add(tmp.right); } } //返回处理完的根节点 return root; }}
转载地址:http://jfer.baihongyu.com/