翻转一棵二叉树 + Java中queue的总结

来源:互联网 发布:mysql安装初始化 编辑:程序博客网 时间:2024/04/28 06:05


该题目用Java实现最好的方式是队列实现。

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root: a TreeNode, the root of the binary tree     * @return: nothing     */        public void invertBinaryTree(TreeNode root) {          if (root==null)             {            <span style="white-space:pre"></span>return ;             }           Queue<TreeNode> queue =new ArrayDeque<TreeNode>();          queue.offer(root);            while (!queue.isEmpty())             {            <span style="white-space:pre"></span>TreeNode node=queue.peek();            <span style="white-space:pre"></span>TreeNode temp=node.left;          <span style="white-space:pre"></span>node.left=node.right;                  node.right=temp;          <span style="white-space:pre"></span>queue.poll();            <span style="white-space:pre"></span>if (node.left!=null){            <span style="white-space:pre"></span>queue.offer(node.left);             <span style="white-space:pre"></span>}          <span style="white-space:pre"></span>if (node.right!=null){            <span style="white-space:pre"></span>queue.offer(node.right);           <span style="white-space:pre"></span>}             }         }    }

关于队列,下表显示了jdk1.5中的阻塞队列的操作:
add         增加一个元索                        如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
element  返回队列头部的元素              如果队列为空,则抛出一个NoSuchElementException异常
offer       添加一个元素并返回true        如果队列已满,则返回false
poll         移除并返问队列头部的元素    如果队列为空,则返回null
peek       返回队列头部的元素              如果队列为空,则返回null
put         添加一个元素                         如果队列满,则阻塞
take        移除并返回队列头部的元素     如果队列为空,则阻塞


0 0