[LeetCode-JAVA] Count Complete Tree Nodes

來源:互聯網
上載者:User

標籤:

題目:

Given a complete binary tree, count the number of nodes.

Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2hnodes inclusive at the last level h.

題意:求一個完全二叉樹的節點個數。

思路:找到最後一層的最後一個節點,可以判斷左右節點最最左邊的層數是否相同,如果相同,則左子樹為滿二叉樹,若不同則右子樹為滿二叉樹。

其中在求解的過程中,需要用到冪次的運算,如果用Math.pow會逾時,可以考慮有位操作,但是要考慮2的0次冪的特殊情況。

代碼:

public class Solution {    public int countNodes(TreeNode root) {        if(root == null)            return 0;        int left = countLevel(root.left);        int right = countLevel(root.right);                int leftpow = 2<<(left-1);        int rightpow = 2<<(right-1);                if(left == 0)   //0次冪,<<不出來            leftpow = 1;        if(right == 0)            rightpow = 1;                if(left == right){            return leftpow + countNodes(root.right);        }else            return rightpow + countNodes(root.left);    }        public int countLevel(TreeNode root) {        if(root == null)            return 0;        int count = 0;        while(root != null) {            count++;            root = root.left;        }                return count;    }}

 

[LeetCode-JAVA] Count Complete Tree Nodes

聯繫我們

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