简介

image.png

56]M`EQL26C_L}PP_)V%2JK.png

二叉搜索树 遍历

先序遍历

image.png
image.png

中序遍历

image.png
image.png

后序遍历

image.png
image.png

宽度优先遍历

image.png

判断是否为 二叉搜索树

image.png
image.png

判断是否为完全二叉树

  1. public static boolean isCBT(Node head){
  2. if(head == null){
  3. return true;
  4. }
  5. LinkedList<Node> queue = new LinkedList<>();
  6. boolean leaf = false;
  7. Node l = null;
  8. Node r = null;
  9. queue.add(head);
  10. while(!queue.isEmpty()){
  11. head = queue.poll();
  12. l = head.getLeft();
  13. r = head.getRight();
  14. // leaf 为 true ,即无子节点,判断其是否有子节点
  15. if((leaf && (l != null || r != null)) || (l == null && r != null)){
  16. return false;
  17. }
  18. if(l != null){
  19. queue.add(l);
  20. }
  21. if(r != null){
  22. queue.add(r);
  23. }
  24. // 一次标记为 true ,永久为 true
  25. if(l == null || r == null){
  26. leaf = true;
  27. }
  28. }
  29. return true;
  30. }