在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Java如何求树的直径

109次阅读
没有评论

共计 2901 个字符,预计需要花费 8 分钟才能阅读完成。

本篇内容主要讲解“Java 如何求树的直径”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Java 如何求树的直径”吧!

package com.lifeibigdata.algorithms.blog;
import java.util.ArrayList;
import java.util.List;
 * Created by lifei on 16/6/22.
 */
public class MaxLenInBinTree {
 /*
 a. 1
 / \
 2 3
 / \ / \
 4 5 6 7
 max=4 pass  root 
 b. 1
 / \
 2 3
 / \
 4 5
 / \
 6 7
 / \
 8 9
 max=6. do not pass  root 
 */
 private int maxLen=0;
 public static void main(String[] args) { int[] a={1,2,3,4,5,6,7}; // 层级遍历
 //store in LevelOrder,Complete Binary Tree. 0==no child
 MaxLenInBinTree m=new MaxLenInBinTree();
 Node aRoot=m.createTree(a);
 m.findMaxLen(aRoot);
 System.out.println(m.maxLen);
 int[] b={1,2,3,4,5,0,0,6,0,0,7,0,0,0,0,8,0,0,0,0,0,0,9};
 Node bRoot=m.createTree(b);
 m.findMaxLen(bRoot);
 System.out.println(m.maxLen);
 }
 public void findMaxLen(Node node){ if(node==null) return ;
 if(node.getLeft()==null){ node.setMaxLeftLen(0);
 }
 if(node.getRight()==null){ node.setMaxRightLen(0);
 }
 if(node.getLeft()!=null){ findMaxLen(node.getLeft());
 }
 if(node.getRight()!=null){ findMaxLen(node.getRight());
 }
 if(node.getLeft()!=null){
 int temp=0;
 Node left=node.getLeft();
 if(left.getMaxLeftLen() left.getMaxRightLen()){ temp=left.getMaxLeftLen();
 }else{ temp=left.getMaxRightLen();
 }
 node.setMaxLeftLen(temp+1);
 }
 if(node.getRight()!=null){
 int temp=0;
 Node right=node.getRight();
 if(right.getMaxLeftLen() right.getMaxRightLen()){ temp=right.getMaxLeftLen();
 }else{ temp=right.getMaxRightLen();
 }
 node.setMaxRightLen(temp+1);
 }
 if(maxLen node.getMaxLeftLen()+node.getMaxRightLen()){ maxLen=node.getMaxLeftLen()+node.getMaxRightLen();
 }
 }
 public Node createTree(int[] data){
 List Node  nodeList=new ArrayList Node 
 for(int each:data){ Node n=new Node(each);
 nodeList.add(n);
 }
 int lastRootIndex=data.length/2-1;
 for(int i=0;i =lastRootIndex;i++){ Node root=nodeList.get(i);
 Node left=nodeList.get(i*2+1);
 if(left.getData()!=0){ root.setLeft(left);
 }else{ root.setLeft(null);
 }
 if(i*2+2 data.length){ Node right=nodeList.get(i*2+2);
 if(right.getData()!=0){ root.setRight(right);
 }else{ root.setRight(null);
 }
 }
 }
 Node root=nodeList.get(0);
 return root;
 }
 class Node{
 private int data;
 private Node left;
 private Node right;
 private int maxLeftLen;//the max length of leftTree
 private int maxRightLen;
 public Node(int i){
 data=i;
 }
 public int getData() {
 return data;
 }
 public void setData(int data) {
 this.data = data;
 this.left=null;
 this.right=null;
 }
 public Node getLeft() {
 return left;
 }
 public void setLeft(Node left) {
 this.left = left;
 }
 public Node getRight() {
 return right;
 }
 public void setRight(Node right) {
 this.right = right;
 }
 public int getMaxLeftLen() {
 return maxLeftLen;
 }
 public void setMaxLeftLen(int maxLeftLen) {
 this.maxLeftLen = maxLeftLen;
 }
 public int getMaxRightLen() {
 return maxRightLen;
 }
 public void setMaxRightLen(int maxRightLen) {
 this.maxRightLen = maxRightLen;
 }
 }
}

到此,相信大家对“Java 如何求树的直径”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2901字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 亚洲国产一区二区三区综合片 | 亚洲欧美综合网 | 成人区人妻精品一区二区不卡 | 国产精品深夜福利免费观看 | 四虎国产成人免费观看 | 成人网站免费大全日韩国产 | 亚洲精品无码专区 | 永久免费看黄 | 精品国产一区二区三区不卡在线 | 成年网站在线播放 | 欧美精品色精品一区二区三区 | 日本一区午夜艳熟免费 | 国产成人a视频高清在线观看 | 中文免费观看视频网站 | 国产欧美久久一区二区 | 久久无码人妻一区二区三区午夜 | 午夜爽爽爽视频 | 2017天天鲁夜夜夜夜夜夜夜 | 成人欧美日韩一区二区三区 | 欧美成人一区二区三区在线视频 | 亚洲精品国产精品乱码不卡√ | 国产精品视频免费在线观看 | 精品日产 | 动漫精品专区一区二区三区不卡 | 午夜影院普通用户体验区 | 人妻互换精品一区二区 | 好色亚洲 | 在线观看 一区 | 日本特级 | 亚洲综合色视频 | 和岳每晚弄的高潮嗷嗷叫视频 | 亚洲av成人无码久久www | 美女免费黄网站 | 国产无av码在线观看 | 国产精品一品二区三区的使用体验 | 公么看我喂奶水涨帮我吃小说 | 九9热这里真品 | 又爽又大又黄a级毛片在线视频 | 日本黄色一级片视频 | 91久久精品一区二区三区 | 久久一区二区三区四区 |