算法和数据结构面试题(12)-求二叉树最远距离

题目


如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,
我们姑且定义"距离"为两节点之间边的个数。
写一个程序,
求一棵二叉树中相距最远的两个节点之间的距离。

代码


public class Problem12 {
	private int maxLength;

	public int getLargestLength(BSTreeNode node) {
		if (node == null)
			return 0;
		if (node.getLeft() != null) {
			node.setLeftMaxLength(getLargestLength(node.getLeft()) + 1);
		} else {
			node.setLeftMaxLength(0);
		}
		if (node.getRight() != null) {
			node.setRightMaxLength(getLargestLength(node.getRight()) + 1);
		} else {
			node.setRightMaxLength(0);
		}
		if (node.getLeftMaxLength() >= node.getRightMaxLength()) {
			maxLength = node.getLeftMaxLength();
		} else {
			maxLength = node.getRightMaxLength();
		}
		if (node.getLeftMaxLength() + node.getRightMaxLength() > maxLength) {
			maxLength = node.getLeftMaxLength() + node.getRightMaxLength();
		}
		return node.getLeftMaxLength() + node.getRightMaxLength();
	}


你可能感兴趣的:(数据结构,算法)