二叉樹節點個數,葉子個數,第K層個數,最低公共節點

2022-02-04 01:52:43 字數 1190 閱讀 2103

1. 節點個數

function

getnodenum(root)

//+1為root的計數

return getnodenum(root.left) + getnodenum(root.right) + 1;

}

2. 葉子個數

function

getleafnum(root)

if(root.left == null && root.right == null

)

return getleafnum(root.left) +getleafnum(root.right);

}

3. 第k層節點個數

//

遞迴方法

function

getlevelknum(root,k)

if(k == 1)

return getlevelknum(root.left,k-1) + getlevelknum(root.right,k-1);}//

非遞迴方法,使用層次遍歷,記錄每層的節點個數,到達第k層時,返回節點個數

function

getlevelknum2(root,k)

var queue =;

var level = 1;

queue.push(root);

while(queue.length > 0)

while(levelsize > 0)

if(node.right)

levelsize--;

}level++;

}return 0;

}

4. 二叉樹的最低公共節點,判斷節點在左右兩側,則根節點(可能為子樹根)為最小公共節點,否則在左子樹或右子樹中遞迴查詢公共節點

function

getlastcommonparent(root,node1,node2)

else

}else

else

}}

function

findnode(root,node)

if(root ==node)

return findnode(root.left,node) ||findnode(root.right,node);

}

二叉樹的節點個數 葉子節點個數 第k層的節點個數

class binarytreenode public class nodesstatistics 求二叉樹中葉子節點的個數 1 如果二叉樹為空,返回0 2 如果二叉樹不為空,返回1 3 如果二叉樹不為空,且左右子樹不同時為空,返回左子樹中葉子節點個數加上右子樹中葉子節點個數。param root ...

完全二叉樹節點個數

關於作者 最簡單的解法就是遍歷這棵樹,時間複雜度是o n 如果只是這一種解法,就不會有本文了。本文中給出兩種解法。第一次看到完全二叉樹的定義比較懵,搜尋到的定義如下 設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第h層所有的結點都連續集中在最左邊,這就是完全二叉樹...

leetcode 完全二叉樹節點個數

給出乙個完全二叉樹,求出該樹的節點個數。說明 完全二叉樹的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。此題為求樹中節點個數,可以直接使用遞迴方法計算樹中遍歷樹中...