内容很常规

没有说出三种遍历方式在实际中的应用,比如二叉搜索树下 使用中序遍历可以得到一个有序序列

问题思考

  1. 给定一组数据,比如 1,3,5,6,9,10。你来算算,可以构建出多少种不同的二叉树?

数组中的排列组合,n!

  1. 我们讲了三种二叉树的遍历方式,前、中、后序。实际上,还有另外一种遍历方式,也就是按层遍历,你知道如何实现吗?

image.png

  1. public List<List<Integer>> levelOrder(TreeNode root) {
  2. List<List<Integer>> res = new ArrayList();
  3. if(root==null){
  4. return res;
  5. }
  6. Queue<TreeNode> queue = new LinkedList();
  7. queue.add(root);
  8. while(!queue.isEmpty()){
  9. int tmpLength = queue.size();
  10. List<Integer> list = new ArrayList();
  11. //内层循环把这层的元素都取出来
  12. for(int i = 0;i<tmpLength;i++){
  13. TreeNode node = queue.poll();
  14. list.add(node.val);
  15. if(node.left!=null){
  16. queue.add(node.left);
  17. }
  18. if(node.right!=null){
  19. queue.add(node.right);
  20. }
  21. }
  22. res.add(list);
  23. }
  24. return res;
  25. }