有没有方法可以找到不一定是二进制的树的高度?对于二叉树的高度有许多算法,但它们都不适用于非二元树。非二叉树高度
Q
非二叉树高度
1
A
回答
1
定义对于任何树都是一样的。树的高度是任何一个孩子的高度(加上一个)。所以如果你有三个孩子,你可以检查他们所有三个孩子,递归地把最大的+1作为你的身高。
0
通常,您可以将二叉树的大部分算法扩展为非二进制。
例如,对于2-树:
h(node) = max(h(left-child-of(node)) , h(right-child-of(node)))+1
其可以扩展到:
h(node) = max(h(for-all-child-of(node)) + 1
2
是的,有。递归方法可以是这样的:
public class TreeNode<T>{
private List<TreeNode<T>> children = new ArrayList<TreeNode<T>>();
private T data = null;
public TreeNode(T data){
this.data = data;
}
public List<TreeNode<T>> getChildren(){
return children;
}
public void setChild(TreeNode<T> children){
this.children.add(children);
}
public Integer getHeight(TreeNode<T> root){
if(root == null) return 0;
Integer h=0;
for(TreeNode<T> n : root.getChildren()){
h = Math.max(h, getHeight(n));
}
return h+1;
}
}
测试:
public static void main(String[] args){
TreeNode<Integer> root = new TreeNode<Integer>(50);
TreeNode<Integer> c1 = new TreeNode<Integer>(100);
TreeNode<Integer> c2= new TreeNode<Integer>(10);
TreeNode<Integer> c3 = new TreeNode<Integer>(-5);
TreeNode<Integer> c4 = new TreeNode<Integer>(0);
TreeNode<Integer> c5 = new TreeNode<Integer>(33);
TreeNode<Integer> c6 = new TreeNode<Integer>(1);
TreeNode<Integer> c7 = new TreeNode<Integer>(2);
TreeNode<Integer> c8 = new TreeNode<Integer>(3);
TreeNode<Integer> c9 = new TreeNode<Integer>(300);
TreeNode<Integer> c10 = new TreeNode<Integer>(350);
root.setChild(c1);
root.setChild(c2);
c2.setChild(c3);
c3.setChild(c4);
c3.setChild(c5);
c3.setChild(c6);
c3.setChild(c7);
c3.setChild(c8);
c1.setChild(c9);
c1.setChild(c10);
System.out.print("Pre order: \n");
root.dfs(root, 0);
System.out.print("\nPost order: \n");
root.dfs(root, 1);
System.out.print("\nBFS: \n");
root.bfs(root);
System.out.println();
System.out.print("\nHeigth: \n");
System.out.println(root.getHeight(root));
}
结果:
Heigth:
3
相关问题
- 1. 二叉树高度
- 2. 查找非二叉树的高度
- 3. 计算非二叉树的高度
- 4. 查找二叉树高度
- 5. 二叉树高度函数
- 6. Java二叉树高度
- 7. 混淆 - 二叉树高度
- 8. 二叉树的高度
- 9. 非二叉树
- 10. 与非二叉树
- 11. L叶节点的二叉树高度
- 12. 获取二叉搜索树的高度
- 13. 返回二叉查找树的高度
- 14. 查找二叉查找树的高度
- 15. 二叉树高度是否正确?
- 16. 二叉搜索树的高度
- 17. 无法找出二叉树的高度
- 18. 计算二叉树的高度
- 19. 二叉搜索树的总高度
- 20. 二叉树的高度范围
- 21. 计算二叉树的高度
- 22. 完整二叉树的高度
- 23. 找出二叉树的高度
- 24. 计算二叉搜索树的高度
- 25. 如何找到非二叉树的高度?
- 26. 非递归程序找到二叉树的最小高度
- 27. 遍历非二叉树
- 28. 需要帮助二叉树程序(非二叉搜索树)
- 29. 如何创建二叉树(非二叉搜索树)
- 30. 二叉树 - 插入到非空树
查找二叉树的高度的算法的算法发现只是特例任何树的高度。 –