簡體   English   中英

如何從級別順序數組構造二叉樹?

[英]How to construct a binary tree from level order array?

我正在研究一個編碼問題,現在我有點困惑。 如果給我一個數組,它表示二叉樹的層序遍歷。 我如何從中構建一棵樹?

到目前為止,這是我迄今為止的思考過程:我知道第0th索引是rootleftChild = 2*i+1rightChild = 2*i+2

這是我到目前為止所擁有的,我認為這是不對的:

public Tree buildTree(ArrayList<Tree> arr, int i) {
    if (i > list.size() - 1) {
        return null;
    }

    root = list.get(i);
    root.LeftChild = buildTree(arr, 2*i+1);
    root.RightChild = buildTree(arr, 2*i+2);

    return root;
}

我的i從 0 開始,謝謝。

您的代碼僅適用於完整的二叉樹,這是二叉樹的一種特殊情況。

不能僅從級別順序遍歷構建通用二叉樹。

您需要兩次遍歷,其中一次必須是中序遍歷

以下組合可以唯一標識一棵樹。

  • 中序和預序。
  • 中序和后序。
  • 中序和級序。

盡管存在這樣的可能性,以建構樹(只給出層次序遍歷),如果你已經給定數組部分分離像在描述這個職位

您的代碼看起來不錯……盡管您的方法采用ArrayList<Tree>而不是ArrayList<Node>很奇怪。 你為什么不認為它是對的? 你如何測試你的方法? 你得到什么樣的錯誤?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM