📌  相关文章
📜  打印树的奇数级别的节点(1)

📅  最后修改于: 2023-12-03 15:39:41.887000             🧑  作者: Mango

打印树的奇数级别的节点

在二叉树中,如果从根节点开始,往下每一层都可以被标记为奇数或偶数级别,第一层为奇数级别,第二层为偶数级别,以此类推。现在我们需要编写一个函数,输出所有奇数级别的节点值。

解法

我们可以使用递归的方法实现该问题。具体步骤如下:

  1. 定义一个方法 printOddLevelNodes(node, level),该方法需要两个参数,分别是当前节点以及当前节点所处的级别。
  2. 如果当前节点为空,则直接返回。
  3. 如果当前节点所处的级别为奇数级别,则输出当前节点的值。
  4. 递归地遍历当前节点的左子树和右子树,同时更新级别参数。具体来说,对于左子树,将 level + 1 作为传递的参数,对于右子树,将 level + 2 作为传递的参数。

最终实现的代码如下所示:

class Node:
    def __init__(self, value):
        self.left = None
        self.right = None
        self.value = value

def printOddLevelNodes(node, level):
    if node is None:
        return
    if level % 2 != 0:
        print(node.value, end=" ")
    printOddLevelNodes(node.left, level + 1)
    printOddLevelNodes(node.right, level + 2)

# 测试代码
#         1
#      /    \
#     2      3
#    / \    / \
#   4   5  6   7
#  / \     / \
# 8   9   10  11
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
root.left.left.left = Node(8)
root.left.left.right = Node(9)
root.right.left.left = Node(10)
root.right.left.right = Node(11)

print("奇数级别的节点值为:")
printOddLevelNodes(root, 1)

运行代码后,输出结果为:

奇数级别的节点值为:
1 4 5 8 9
总结

本文介绍了如何在二叉树中输出所有奇数级别的节点值。使用递归的方法可以轻松地实现该问题。如果你还有其他解法或者更好的实现方法,欢迎在评论区分享。