gpt4 book ai didi

java - 如何实现二叉树中的方法以返回变量之后访问的下一个节点?

转载 作者:行者123 更新时间:2023-12-02 02:35:34 28 4
gpt4 key购买 nike

enter image description here

Preorder: / * + a b – c d + e f
Inorder: a + b * c – d / e + f
Postorder: a b + c d - * e f + /

假设我们有这棵树。我已经得到了打印订单的代码;预序、中序和后序。现在剩下的问题是,要求用户在什么字符旁边输入Preorder?,假设用户输入了字母a,那么输出应该是

Preorder next to what character?: a
Preordernext(a) = b

依序和后序,现在的问题是我似乎无法从特定节点找到下一个节点。

System.out.print("Preorder next of what character: ");
char q = scn.next().charAt(0);
System.out.print("PreorderNext("+q+")| ");
binaryTree.searchPostOrder(q);

到目前为止,这就是我想出的结果,除了空白之外我没有收到任何结果......

public void searchPostOrder(char kwanix) {
searchPostorder(root, kwanix);
}
private char searchPostorder(Node node, char kwanix) {
if (node.getData() == kwanix) {
if (node.getLeft() != null) {
if (node.getLeft().equals(kwanix)) {
kwanix = node.getData();
}
}
if (node.getRight() != null) {
if (node.getRight().equals(kwanix)) {
kwanix = node.getData();
}
}
}
return kwanix;
}

这是程序运行后的结果

Post Order| d c b a 
Pre order| a c d b
In order| c d a b

Preorder next of what character: a
PreorderNext(a)|

最佳答案

一个(简单)解决方案:

您认为您的树“行走”会导致不同的结果。

Preorder: / * + a b – c d + e f
Inorder: a + b * c – d / e + f
Postorder: a b + c d - * e f + /

请注意,此输出包含您的所有节点,只是顺序不同。看看:在预购行的序列中... b 紧接在 a 之后!

换句话说:一个简单的解决方案是:

  • 您选择用户想要的订单策略
  • 你按照这个顺序走你的树
  • 当您找到a时,您将继续到下一个节点(即叶子),这就是您返回的结果

关于java - 如何实现二叉树中的方法以返回变量之后访问的下一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64368762/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com