微軟等名企面試題4–二叉樹專題

來源:互聯網
上載者:User

聲明:

這篇部落格的某些題目和答案成果源自於July和何海濤的部落格,網址:點擊開啟連結   點擊開啟連結

本人只是針對自己情況,把感興趣的題目都羅列出來;針對其他的題目(不是來自上面兩位),寫出了自己的演算法,僅供自己慢慢學習和品味。如有問題,請在部落格下面留言。

1  題目:輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

例如:輸入二元樹:

                                            10
                                          /     \
                                        6        14
                                      /         /   \
                                    4         12     16

輸出該樹的深度3。

二元樹的結點定義如下:

struct SBinaryTreeNode // a node of the binary tree{      int               m_nValue; // value of node      SBinaryTreeNode  *m_pLeft;  // left child of node      SBinaryTreeNode  *m_pRight; // right child of node};

分析:這道題本質上還是考查二元樹的遍曆。

題目給出了一種樹的深度的定義。當然,我們可以按照這種定義去得到樹的所有路徑,也就能得到最長路徑以及它的長度。只是這種思路用來寫程式有點麻煩。

我們還可以從另外一個角度來理解樹的深度。如果一棵樹只有一個結點,它的深度為1。如果根結點只有左子樹而沒有右子樹,那麼樹的深度應該是其左子樹的深度加1;同樣如果根結點只有右子樹而沒有左子樹,那麼樹的深度應該是其右子樹的深度加1。如果既有右子樹又有左子樹呢?那該樹的深度就是其左、右子樹深度的較大值再加1。

上面的這個思路用遞迴的方法很容易實現,只需要對遍曆的代碼稍作修改即可。參考代碼如下:

///////////////////////////////////////////////////////////////////////// Get depth of a binary tree// Input: pTreeNode - the head of a binary tree// Output: the depth of a binary tree///////////////////////////////////////////////////////////////////////int TreeDepth(SBinaryTreeNode *pTreeNode){      // the depth of a empty tree is 0      if(!pTreeNode)            return 0;      // the depth of left sub-tree      int nLeft = TreeDepth(pTreeNode->m_pLeft);      // the depth of right sub-tree      int nRight = TreeDepth(pTreeNode->m_pRight);      // depth is the binary tree      return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.