Discuss / Python / 做一个二叉树

做一个二叉树

Topic source

西凌976

#1 Created at ... [Delete] [Delete and Lock User]

试着做了一个二叉树,最后输出的结果唯独没有number的值,不知道出了什么错误,希望有大佬能够指出。感激!代码如下: class Tree: def init(self, val='#', left=None, right=None): self.val = val self.left = left self.right = right

    # 前序构建二叉树

def FrontBuildTree(self):
    temp = input('Please Input: ')
    node = Tree(temp)
    if (temp != '#'):
        node.left = self.FrontBuildTree()
        node.right = self.FrontBuildTree()
    return node  # 因为没有引用也没有指针,所以就把新的节点给返回回去

# 前序遍历二叉树

def VisitNode(self):
    print(self.val)
    if (self.val != '#'):
        self.left.VisitNode()
        self.right.VisitNode()

if name == 'main': root = Tree() root = root.FrontBuildTree() root.VisitNode()

最后操作是这样: Please Input: 1 Please Input: 2 Please Input: 3 Please Input: # Please Input: # Please Input: 4 Please Input: # Please Input: # Please Input: 5 Please Input: 6 Please Input: # Please Input: # Please Input: 7 Please Input: # Please Input: #

程序结果是这样: 1 2 3 # # 4 # # 5 6 # # 7 # # Process finished with exit code 0

西凌976

#2 Created at ... [Delete] [Delete and Lock User]

以上是没有加入number的代码,下面加入了number,代码如下:

class Tree: def init(self, val=None, left=None, right=None, number=0, depth=0): self.val = val self.left = left self.right = right self.number= number self.depth= depth

    # 前序构建二叉树

def FrontBuildTree(self):
    temp = input('Please Input: ')
    node = Tree(temp)
    node.number= node.number+1
    if (temp != '#'):
        node.left = self.FrontBuildTree()
        node.right = self.FrontBuildTree()
    return node # 因为没有引用也没有指针,所以就把新的节点给返回回去

# 前序遍历二叉树

def VisitNode(self):
    print(self.val)
    if (self.val != '#'):
        self.left.VisitNode()
        self.right.VisitNode()
    print(self.number)

if name == 'main': root = Tree() root = root.FrontBuildTree() root.VisitNode()

西凌976

#3 Created at ... [Delete] [Delete and Lock User]

但是输出和第一次的是一样的不知道哪里错了

你的想法是number对应结点的序号吧,每次创建一个结点number递增。我感觉是下面加粗的代码的锅,因为你每次创建结点number都从0开始了,最终打印的结点number全为1

def FrontBuildTree(self): temp = input('Please Input: ') node = Tree(temp) node.number= node.number+1


  • 1

Reply