首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二分查找树插入字符

二分查找树插入字符
EN

Stack Overflow用户
提问于 2021-05-16 12:43:15
回答 1查看 105关注 0票数 0

是否可以在二进制搜索树中打印字符而不是整数?我在试着打印字母而不是数字。有没有办法把1,2,3,4,5,6和7变成a,b,c,d,e,f和g?请帮助我将int转换为字符串或字符。提前谢谢你!

代码语言:javascript
复制
class Node:
    def __init__(self, key):
        self.left = None
        self.right = None
        self.val = key

def printInorder(root):

    if root:

        printInorder(root.left)

        print(root.val),

        printInorder(root.right)


def printPostorder(root):

    if root:

        printPostorder(root.left)

        printPostorder(root.right)

        print(root.val),

 def printPreorder(root):

    if root:

        print(root.val),

        printPreorder(root.left)

        printPreorder(root.right)

root = Node(1)
root.right = Node(2)
root.right.right = Node(3)
root.right.right.right = Node(4)
root.right.right.right.right = Node(5)
root.right.right.right.right.right = Node(6)
root.right.right.right.right.right.right = Node(7)

print ("Preorder")
printPreorder(root) 
print ("In-order")
printInorder(root)
print ("Post-order")
printPostorder(root)
EN

回答 1

Stack Overflow用户

发布于 2021-05-16 12:54:51

我能想到的最简单的方法就是给数字加上一个偏移量,然后把它转换成字符:

代码语言:javascript
复制
def print_as_letter(num):
    ascii_a = 97
    assert num < 27, "not enough letters in the alphabet"
    letter = chr(num+ascii_a-1) # -1 since you start your nodes at 1
    print(letter)

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

def printInorder(root):
    if root:
        printInorder(root.left)
        print_as_letter(root.val)
        printInorder(root.right)


def printPostorder(root):
    if root:
        printPostorder(root.left)
        printPostorder(root.right)
        print_as_letter(root.val)

def printPreorder(root):
    if root:
        print_as_letter(root.val)
        printPreorder(root.left)
        printPreorder(root.right)

root = Node(1)
root.right = Node(2)
root.right.right = Node(3)
root.right.right.right = Node(4)
root.right.right.right.right = Node(5)
root.right.right.right.right.right = Node(6)
root.right.right.right.right.right.right = Node(7)

print ("Preorder")
printPreorder(root) 
print ("In-order")
printInorder(root)
print ("Post-order")
printPostorder(root)

输出:

代码语言:javascript
复制
Preorder
a
b
c
d
e
f
g
In-order
a
b
c
d
e
f
g
Post-order
g
f
e
d
c
b
a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67553239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档