二叉树的遍历:
    力扣104,111,二叉树的最大深度与最小深度求解,迭代与递归。
    1.最大深度

    1. 迭代法:
    2. if(root==null){
    3. return res;
    4. }
    5. TreeNode temp=root;
    6. Stack<TreeNode> stack = new Stack<>();
    7. while (temp!=null||!stack.isEmpty()){
    8. if(temp!=null){
    9. stack.push(temp);
    10. temp=temp.left;
    11. }else{
    12. temp=stack.pop();
    13. res.add(temp.val);
    14. temp=temp.right;
    15. }
    16. }
    17. 递归法:
    18. if(root==null){
    19. return 0;
    20. }
    21. int leftDepth=maxDepth(root.left);
    22. int rightDepth=maxDepth(root.right);
    23. return Math.max(leftDepth,rightDepth)+1;

    2.最小深度

    1. 迭代法
    2. if(root==null){
    3. return 0;
    4. }
    5. Deque<TreeNode>queue = new LinkedList<>();
    6. queue.addLast(root);
    7. int res=0;
    8. while (!queue.isEmpty()){
    9. int size=queue.size();
    10. for(int i=0;i<size;i++){
    11. TreeNode node = queue.pollFirst();
    12. if(node.left==null&&node.right==null){
    13. return res+1;
    14. }
    15. if(node.left!=null){
    16. queue.addLast(node.left);
    17. }
    18. if(node.right!=null){
    19. queue.addLast(node.right);
    20. }
    21. }
    22. res++;
    23. }
    24. return res;
    25. 递归法
    26. if(root==null){
    27. return 0;
    28. }
    29. int leftDepth=minDepth(root.left);
    30. int rightDepth=minDepth(root.right);
    31. if(root.left!=null&&root.right==null){
    32. return 1+leftDepth;
    33. }else if(root.left==null&&root.right!=null){
    34. return 1+rightDepth;
    35. }else{
    36. return 1+Math.min(leftDepth,rightDepth);
    37. }