C#解leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal

來源:互聯網
上載者:User

標籤:

Given inorder and postorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

 

這個題目是給你一棵樹的中序遍曆和後序遍曆,讓你將這棵樹表示出來。其中可以假設在樹中沒有重複的元素。

當做完這個題之後,建議去做做第105題,跟這道題類似。

 

分析:這個解法的基本思想是:我們有兩個數組,分別是IN和POST.後序遍曆暗示POSR[end](也就是POST數組的最後一個元素)是根節點。之後我們可以在IN中尋找POST[END].假設我們找到了IN[5].現在我們就能夠知道IN[5]是根節點,然後IN[0]到IN[4]是左子樹,IN[6]到最後是右子樹。然後我們可以通過遞迴的方式處理這個數組。

代碼如下,其中改代碼擊敗了100%的C#提交者:

/** * Definition for a binary tree node. * public class TreeNode { *     public int val; *     public TreeNode left; *     public TreeNode right; *     public TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode BuildTree(int[] inorder, int[] postorder) {        return binaryTree(postorder.Length-1,0,inorder.Length-1,inorder,postorder);    }                    public TreeNode binaryTree(int postEnd,int inStart,int inEnd,int[] inorder, int[] postorder)    {        if(postEnd<0||inStart>inEnd)           return null;                        int inindex=0;        TreeNode root=new TreeNode(postorder[postEnd]);                for(int i=inStart;i<=inEnd;i++)        {            if(inorder[i]==postorder[postEnd])            {                inindex=i;                break;            }        }                        root.left=binaryTree(postEnd-(inEnd-inindex)-1,inStart,inindex-1,inorder,postorder);        root.right=binaryTree(postEnd-1,inindex+1,inEnd,inorder,postorder);                return root;            }}

最最關鍵的是確定函數的實參的時候,一定不能弄錯。 

root.left=binaryTree(postEnd-(inEnd-inindex)-1,inStart,inindex-1,inorder,postorder);

中的inEnd-inindex代表了右子樹的元素數,為了求得左子樹的最後一位,應該將該元素減去。

C#解leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.