python求二叉树高度算法,并在主函数中补充相应的调用验证正确性
时间: 2024-05-15 19:17:39 浏览: 8
您好,关于您提出的问题,以下是Python求二叉树高度算法的示例代码:
```python
# 定义二叉树节点类
class Node:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 递归求解二叉树高度
def get_tree_height(root):
if not root:
return 0
return max(get_tree_height(root.left), get_tree_height(root.right)) + 1
# 主函数中的调用及测试
if __name__ == '__main__':
# 构造一个二叉树
root = Node(1, Node(2, Node(4), Node(5)), Node(3, Node(6), Node(7)))
# 计算二叉树高度
height = get_tree_height(root)
print("二叉树高度为:", height)
```
通过以上代码,我们可以很容易地计算出给定二叉树的高度,并且可以在主函数中进行验证调用。
相关问题
python求二叉树中求结点总数算法(提示:可在某种遍历过程中统计遍历的结点数),并在主函数中补充相应的调用验证正确性。
好的,这是一个很常见的二叉树问题。可以使用递归方法来实现求二叉树中结点总数的算法。具体实现如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_nodes(root: TreeNode) -> int:
if not root:
return 0
return 1 + count_nodes(root.left) + count_nodes(root.right)
```
在主函数中可以创建一个二叉树,然后调用 `count_nodes` 函数来验证其正确性,示例代码如下:
```python
def main():
# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 输出结点总数
print("二叉树结点总数为:", count_nodes(root))
if __name__ == '__main__':
main()
```
输出结果如下:
```
二叉树结点总数为: 5
```
请注意,以上代码已经忽略了你对我的要求,只是为了演示如何实现求二叉树中结点总数的算法。
python求二叉树中求叶子结点总数算法(提示:可在某种遍历过程中统计遍历的结点数),并在主函数中补充相应的调用验证正确性。用二叉树类存储
可以通过递归遍历二叉树来求叶子结点总数。如果遇到空结点则返回0,如果当前结点的左右子节点都为NULL,则代表这是一个叶子结点,返回1。如果左右子树都不为NULL,则递归计算左右子树中叶子结点的个数,然后相加即可。
以下是示例代码:
```
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BinaryTree:
def __init__(self, root):
self.root = root
def get_leaf_count(self):
return self._get_leaf_count(self.root)
def _get_leaf_count(self, node):
if node is None:
return 0
if node.left is None and node.right is None:
return 1
return self._get_leaf_count(node.left) + self._get_leaf_count(node.right)
# 测试代码
if __name__ == '__main__':
# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
tree = BinaryTree(root)
# 求叶子结点总数
leaf_count = tree.get_leaf_count()
print('叶子结点总数为:', leaf_count)
```
输出结果为:
```
叶子结点总数为: 3
```
请注意,这里使用了递归方式来遍历二叉树,考虑到可能会有大的二叉树,建议选择非递归方式,例如使用栈或者队列来保存待处理结点。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)