
public static void main(String[] args) {TreeNode treeNode7 = new TreeNode(7,null, null);TreeNode treeNode6 = new TreeNode(6, treeNode7, null);TreeNode treeNode5 = new TreeNode(5,null, treeNode6);TreeNode treeNode4 = new TreeNode(4,null, null);TreeNode treeNode3 = new TreeNode(3,null, null);TreeNode treeNode2 = new TreeNode(2, treeNode3, treeNode4);TreeNode treeNode1 = new TreeNode(1, treeNode2, treeNode5);System.out.println(scope(treeNode1));}private static int scope(TreeNode treeNode) {if (null == treeNode) return 0;// 定义一个先进先出的队列Queue<TreeNode> queue = new LinkedBlockingDeque<TreeNode>();// 根节点的深度设置为1treeNode.deep = 1;queue.offer(treeNode);while (null != queue) {treeNode = queue.poll();if (null == treeNode.left && null == treeNode.right) {// 返回最先遍历到的叶节点的深度return treeNode.deep;}// 节点的左子节点不为空if (null != treeNode.left) {// 左子节点的深度+1treeNode.left.deep = treeNode.deep + 1;// 将左子节点放入队列中queue.offer(treeNode.left);}// 节点的右子节点不为空if (null != treeNode.right) {// 右子节点的深度+1treeNode.right.deep = treeNode.deep + 1;// 将右子节点放入队列中queue.offer(treeNode.right);}}return 0;}
