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

1 篇文章 0 订阅
1 篇文章 0 订阅


该题目用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值