java 后序遍历输入不明确

ct2axkht  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(115)

请帮助,我无法继续在这方面,因为模糊的输入正在采取。明天之前我必须提交这个。请帮帮我

package q9424;
import java.util.*;
public class CTJ9424 { 

public static String treeTraversals(String treeStr) { 
// Write your code here

}

public static void main(String[] args) { 

String treeStr = args[0];
System.out.println(treeTraversals(treeStr));

使用以下参数完成函数treeTraversals:
treeStr:由空格分隔的整数和连字符(-)组成的字符串
函数将返回:
通过二叉树的后序遍历获得的整数字符串
制约因素:
treeStr和返回值中只允许使用数字、连字符和空格字符treeStr的长度始终介于1和1000之间(包括1和1000)所有整数标记都介于-1000和1000之间(包括-1000和1000
样本测试用例:
输入:
23 41 16 - 0 8 12 - -- - 1 2
输出:
0 41 8 1 2 12 16 23
使用说明:
要运行您的自定义测试用例,请严格地将您的输入和输出布局与可见的测试用例进行Map,并遵循下面给出的函数规则。
功能规则:
使用返回类型String和参数填充函数treeTraversals中缺少的逻辑,如下所示:
字符串treeStr
我试着用我的后序遍历知识来做,但由于输入的模糊性,我无法解决这个问题。

whlutmcx

whlutmcx1#

输入的模糊性
您提供的文本没有指定输入如何表示树,但是示例输入/输出提供了一个线索。使输入与该示例的输出一致的唯一方法是将输入解释为级别顺序遍历,其中包含leaf节点的空子节点并使用连字符表示。
因此,示例输入表示这棵树(其中我也包括连字符):

__23___
         /       \
       41         16
      /  \       /  \
     -    0     8    12
         / \   / \   / \
        -   - -   - 1   2

请注意,输入不会以连字符结束,即使在本示例中,四个连字符也可以指示节点1和2也是叶子。但这是可以默认的。
这是序列化二叉树的常用方法。例如,LeetCode使用类似的编码。
它唯一地定义了一个二叉树。我希望这能解决你关于模糊性的问题。现在就看你是否接受编码挑战了。

oyt4ldly

oyt4ldly2#

这可能没有帮助,如果没有帮助,我愿意删除答案,但这里是如何在Python中解决这个问题的。我有一个函数将输入字符串转换为树结构,还有一个函数以其中一个顺序打印结果树。

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

def buildTree( inp ):
    parts = inp.split()

    root = Node(parts.pop(0))
    undone = [root]
    while undone and parts:
        todo = []
        for s in undone:
            p1 = parts.pop(0)
            p2 = parts.pop(0)
            if p1 != '-':
                s.left = Node(p1)
                todo.append( s.left )
            if p2 != '-':
                s.right = Node(p2)
                todo.append( s.right )
        undone = todo

    return root

def preOrder( tree ):
    if tree:
        print( tree.value )
        preOrder(tree.left)
        preOrder(tree.right)

def inOrder( tree ):
    if tree:
        inOrder(tree.left)
        print( tree.value )
        inOrder(tree.right)

def postOrder( tree ):
    if tree:
        postOrder(tree.left)
        postOrder(tree.right)
        print( tree.value )

inp = "23 41 16 - 0 8 12 - - - - 1 2"
tree = buildTree(inp)
postOrder(tree)

相关问题