农场里有一些牛,每头牛都有一个编号(1-n)。这些牛之间存在一种特殊的关系,我们可以把这些关系看作是一棵二叉树,牛的编号就是二叉树的节点。现在农场主想知道,这些牛之间的最长距离是多少。这里的距离定义为二叉树中任意两个节点之间路径的长度。
区块链毕设网qklbishe.com为您提供问题的解答
农场里有一些牛,每头牛都有一个编号(1-n)。这些牛之间存在一种特殊的关系,我们可以把这些关系看作是一棵二叉树,牛的编号就是二叉树的节点。现在农场主想知道,这些牛之间的最长距离是多少。这里的距离定义为二叉树中任意两个节点之间路径的长度。
真牛!
01:02
非递归做法
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ public int diameterOfBinaryTree (TreeNode root) { // write code here if (root == null) { return 0; } //统计左节点深度 int left = 0; //统计右节点深度 int right = 0; //如果右节点为空,那么就向左循环遍历 while (root.right!=null&&root.left == null) { right++; root = root.right; } //如果左节点为空,那么向右循环遍历 while (root.left!=null&&root.right == null) { left++; root = root.left; } //如果都为空,那么返回左右深度 if (root.left == null && root.right == null) { return (left + right); } //都不为空,则返回其深度 left = getDepth(root.left); right = getDepth(root.right); return (left + right); } //获取该节点的深度 public int getDepth(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); int depth = 0; while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } depth++; } return depth; } }
07:47
以上就是关于问题农场里有一些牛,每头牛都有一个编号(1-n)。这些牛之间存在一种特殊的关系,我们可以把这些关系看作是一棵二叉树,牛的编号就是二叉树的节点。现在农场主想知道,这些牛之间的最长距离是多少。这里的距离定义为二叉树中任意两个节点之间路径的长度。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训