首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Python中创建二叉树?

如何在Python中创建二叉树?
EN

Stack Overflow用户
提问于 2020-10-31 14:45:04
回答 3查看 156关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Binary tree node
class node:
     
    def __init__(self, data):
        self.left=None
        self.right=None
        self.data=data
  
# Function to create a new
# Binary node
def newNode(data):
    return node(data)

def t():
    root=newNode("A")
    root.left = newNode("B")
    root.right = newNode("C")
    root.left.left = newNode("D")
    root.left.right = newNode("G")
    root.right.right = newNode("E")
    root.right.right.left = newNode("F")
    

print(t)

嗨,我试着在上面创建一个二叉树,但当我打印"t“时,我没有设法打印出二叉树。它显示的不是二叉树,而是以下内容:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-31 14:56:16

函数t只是创建了一个二叉树。如果你想打印一棵树,你需要遍历它并打印它。根据您希望打印树的方式,有不同的遍历技术,其中最流行的是InorderPreorderPostorder。检查此wiki link以了解树遍历方法。

您的代码必须经过扩展才能执行所需的树遍历。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Binary tree node
class node:
     
    def __init__(self, data):
        self.left=None
        self.right=None
        self.data=data
  
# Function to create a new
# Binary node
def newNode(data):
    return node(data)

def t():
    root=newNode("A")
    root.left = newNode("B")
    root.right = newNode("C")
    root.left.left = newNode("D")
    root.left.right = newNode("G")
    root.right.right = newNode("E")
    root.right.right.left = newNode("F")
    return root


def in_order(root):
    if root:
        in_order(root.left)
        print (root.data)
        in_order(root.right) 

def pre_order(root):
    if root:
        print (root.data)
        pre_order(root.left)
        pre_order(root.right)
        
def post_order(root):
    if root:        
        post_order(root.left)
        post_order(root.right)
        print (root.data)
        
root = t()


print ("In Order")
in_order(root)
print ("Pre Order")
pre_order(root)
print ("Post Order")
post_order(root)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In Order
D
B
G
A
C
F
E
Pre Order
A
B
D
G
C
E
F
Post Order
D
G
B
F
E
C
A
票数 3
EN

Stack Overflow用户

发布于 2020-10-31 14:48:33

所以有两件事:

当您使用print(t)而不是print(t())时,这是有区别的。print(t)打印函数对象本身,而print(t())打印函数返回的结果。

但是,即使执行后一种操作,也会打印None,因为t()不会返回任何内容。您需要从t()返回root,还需要编写一个特殊的函数来遍历树以打印每个节点的值(如果这是您想要的)。

下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Binary tree node
class node:
     
    def __init__(self, data):
        self.left=None
        self.right=None
        self.data=data
  
# Function to create a new
# Binary node
def newNode(data):
    return node(data)

def t():
    root=newNode("A")
    root.left = newNode("B")
    root.right = newNode("C")
    root.left.left = newNode("D")
    root.left.right = newNode("G")
    root.right.right = newNode("E")
    root.right.right.left = newNode("F")
    return root
    

def treeToString(root, level=0):
  ret = "\t"*level+repr(root.data)+"\n"
  if root.left != None:
      ret += treeToString(root.left, level+1)
  if root.right != None:
      ret += treeToString(root.right, level+1)
  return ret

print(treeToString(t()))


# if you want to assign the tree to an object then do this:

tree = t()
print(tree.left.data)
print(tree.right.data)
票数 2
EN

Stack Overflow用户

发布于 2020-10-31 15:32:12

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Binary tree node
class node:
     
    def __init__(self, data):
        self.left=None
        self.right=None
        self.data=data
  
# Function to create a new
# Binary node
def newNode(data):
    return node(data)

def tree():
    root=newNode("A")
    root.left = newNode("B")
    root.right = newNode("C")
    root.left.left = newNode("D")
    root.left.right = newNode("G")
    root.right.right = newNode("E")
    root.right.right.left = newNode("F")
    return root

t = tree()

print(t.left.data)
print(t.right.data)
print(t.root)

如何从这里访问树根?

我曾尝试打印t.root,但似乎有一个错误:(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64622927

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文