打印某一深度所有叶子结点
# -*- coding: utf-8 -*-
"""
@Description:
@Author: gaofan
@Date: 2020-09-29 14:12
"""
class TreeNode:
def __init__(self, x, left=0, right=0):
self.val = x
self.left = left
self.right = right
class Tree():
def __init__(self):
self.res = []
# 判断是否是叶子结点
def is_leaf_node(self, node: TreeNode):
if node.left == 0 and node.right == 0:
return True
# 遍历某一层所有节点,并打印
def k_depth_leaf(self, root, level):
if root == None:
return
else:
if level == 1 and isinstance(root, TreeNode):
# print("%s " % root.val)
if self.is_leaf_node(root):
self.res.append(root.val)
else:
if isinstance(root, TreeNode):
self.k_depth_leaf(root.left, level - 1)
self.k_depth_leaf(root.right, level - 1)
return self.res
if __name__ == "__main__":
tree = Tree()
n1 = TreeNode(1)
n2 = TreeNode(2, n1, 0)
n3 = TreeNode(3)
n4 = TreeNode(4)
n5 = TreeNode(5, n3, n4)
n6 = TreeNode(6, n2, n5)
n7 = TreeNode(7, n6, 0)
n8 = TreeNode(8)
root = TreeNode('root', n7, n8)
print(tree.k_depth_leaf(root, 5))