二叉树权值最大的叶子节点到权值最小的叶子节点的距离
2016-08-20 21:30
429 查看
有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。
真是醉了,看漏了叶子节点。
代码:
真是醉了,看漏了叶子节点。
代码:
import java.util.*; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/ public class Tree { private TreeNode maxNode; private TreeNode minNode; private boolean stop = false; private int result; public int getDis(TreeNode root) { if(root == null) { return 0; } maxNode = root; minNode = root; getMaxAndMin(root); getMaxLength(root); return result; } private int[] getMaxLength(TreeNode root) { if(root == null) return new int[] {-1, -1}; if(root == maxNode) return new int[] {0, -1}; if(root == minNode) return new int[] {-1, 0}; int[] left = getMaxLength(root.left); int[] right = getMaxLength(root.right); int[] curResult = new int[]{Math.max(left[0], right[0]), Math.max(left[1], right[1])}; if(curResult[0] != -1) curResult[0]++; if(curResult[1] != -1) curResult[1]++; if(!stop && curResult[0] != -1 && curResult[1] != -1) { result = curResult[0] + curResult[1]; stop = true; } return curResult; } private void getMaxAndMin(TreeNode root) { if(root == null) return; if(root.left == null && root.right == null) { if(root.val < minNode.val) { minNode = root; } if(root.val > maxNode.val) { maxNode = root; } } getMaxAndMin(root.left); getMaxAndMin(root.right); } }
相关文章推荐
- 二叉树中权值最大的叶节点到权值最小的叶节点的距离
- 二叉树中最大最小权值节点距离问题
- 搜狐研究院 求二叉树最大叶子节点到最小叶子节点的距离
- 网易——求二叉树最大叶子节点到最小叶子节点的距离
- 求 二叉树中权值最大和最小的叶节点之间的距离
- 二叉树求最大最小叶子节点距离
- 先序遍历建立二叉树,求保存最大数字的叶子节点到最小数字的叶子结点的距离 2016网易编程题
- 二叉树系列——二叉树的最大距离(即相距最远的两个叶子节点,编程之美,百度面试题)
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 面试算法——权值最大的叶节点到权值最小的叶节点的距离
- 求二叉树最大叶子节点距离(不含全局变量)
- 面试题5:计算二叉树中最大节点到最小节点之间的距离
- 求二叉树的最大叶子节点距离(递归)
- 变形二叉树中节点的最大距离(树的最长路径)——非递归解法
- 编程之美3.8求二叉树中节点的最大距离
- 编程之美之求二叉树中节点的最大距离
- 每天学习一算法系列(11) (求二叉树中节点的最大距离)
- 求二叉树中节点的最大距离