/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { // 方法一思路轻松,但速度较慢。方法二晚上做。 public int countNodes(TreeNode root) { LinkedList<TreeNode> queue = new LinkedList<>(); if(root == null){ return 0; } queue.offer(root); int length = 0; while(!queue.isEmpty()){ int len = queue.size(); while(len > 0){ TreeNode node = queue.poll(); length++; if(node.left != null){ queue.offer(node.left); } if(node.right != null){ queue.offer(node.right); } len--; } } return length; } }
复习练习题:
707-设计链表-尝试使用双链表-错误两次-小错误
复习-学习其他完成方法:
104-二叉树的最大深度-递归法思路(后序遍历)、回溯思路(前序遍历)
559-n叉树的最大深度(同上理解)
111-二叉树的最小深度-递归法思路