java面试题:如何求二叉树中节点的最大距离+层序遍历
来源:互联网 发布:狙击模拟软件 汉化版 编辑:程序博客网 时间:2024/06/05 08:06
问题描述:求二叉树中距离最远的两个 节点之间的距离。。
class Node{public int data;public Node left;public Node right;public int leftMaxDistance;public int rightMaxDistance;public Node(int data){this.data=data;this.left=null;this.right=null;}}public class BinaryTree{private int maxLen=0;private Node root;public BinaryTree() {root=null;}private int max(int a,int b){return a>b?a:b;}private void FindMaxDistance(Node root){if(root==null)return ;if(root.left==null)root.leftMaxDistance=0;if(root.right==null)root.rightMaxDistance=0;if(root.left!=null)FindMaxDistance(root.left);if(root.right!=null)FindMaxDistance(root.right);if(root.left!=null){root.leftMaxDistance=max(root.left.leftMaxDistance,root.left.leftMaxDistance)+1;}if(root.right!=null){root.rightMaxDistance=max(root.right.rightMaxDistance,root.right.rightMaxDistance)+1;}if(root.leftMaxDistance+root.rightMaxDistance>maxLen){maxLen=root.leftMaxDistance+root.rightMaxDistance;}}//向二叉排序树插入节点private void insertBtree(int data){Node newNode=new Node(data);if(root==null){root=newNode;}else{Node current=root;Node parent;while(true){parent=current;if(data<current.data){current=current.left;if(current==null){parent.left=newNode;return;}}else{current=current.right;if(current==null){parent.right=newNode;return;}}}//while}}//将数值输入构建二叉树public void buildTree(int[] data){for (int i = 0; i < data.length; i++) {insertBtree(data[i]);}}
//层序遍历二叉树public void layerTranverse(){if(this.root==null){return;}Queue<Node> q=new LinkedList<Node>();q.add(this.root);while(!q.isEmpty()){Node n=q.poll();System.out.print(n.data+" ");if(n.left!=null)q.add(n.left);if(n.right!=null)q.add(n.right);}}public static void main(String[] args) {int[] data={5,3,2,4,7,6,8};BinaryTree bTree=new BinaryTree();bTree.buildTree(data);bTree.FindMaxDistance(bTree.root);System.out.println(bTree.maxLen);
bTree.layerTranverse();
}}
阅读全文
0 0
- java面试题:如何求二叉树中节点的最大距离+层序遍历
- 面试题:求二叉树中节点的最大距离
- 【每日面试题】求一个二叉树中任意两个节点间的最大距离
- java 求二叉树中节点的最大距离.
- Java:求二叉树中节点的最大距离
- 9. 微软面试题:求二叉树中节点间最大距离
- 已知先序遍历和中序遍历,求后序遍历 && 求二叉树中节点的最大距离
- 【二叉树】求二叉树中节点的最大距离
- 求二叉树中节点最大距离
- 3.8求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 求二叉树中节点的最大距离
- 11、求二叉树中节点的最大距离...
- 第三章:3.0 本章内容介绍
- 移动端页面css记录
- Android多渠道打包
- Excel转Json
- C# binding
- java面试题:如何求二叉树中节点的最大距离+层序遍历
- ActionBar重复设置引起错误
- FZU 1686 神龙的难题 重复覆盖问题
- 【Java&Android】名企面试题和涉及知识点整理
- CoordinatorLayout 实际应用效果
- 贝叶斯推断 3. 离散随机变量的先验和建模
- Linux安装mysql并配置外网访问
- redis启动错误-- Creating Server TCP listening socket *:6379: listen: UnKnown error
- 处理上传文件控件碰到的问题