二叉树节点个数,叶子个数,第K层个数,最低公共节点
生活随笔
收集整理的這篇文章主要介紹了
二叉树节点个数,叶子个数,第K层个数,最低公共节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 節點個數
function getNodeNum(root){if(root == null){return 0;}//+1為root的計數return getNodeNum(root.left) + getNodeNum(root.right) + 1; }2. 葉子個數
function getLeafNum(root){if(root == null){return 0;}if(root.left == null && root.right == null){return 1;}return getLeafNum(root.left) + getLeafNum(root.right); }3. 第K層節點個數
//遞歸方法 function getLevelKNum(root,k){if(root == null || k < 1){return 0;}if(k == 1){return 1;}return getLevelKNum(root.left,k-1) + getLevelKNum(root.right,k-1); } //非遞歸方法,使用層次遍歷,記錄每層的節點個數,到達第K層時,返回節點個數 function getLevelKNum2(root,k){if(root == null){return;}var queue = [];var level = 1;queue.push(root);while(queue.length > 0){var levelSize = queue.length;if(level == k){return levelSize;}while(levelSize > 0){var node = queue.shift();if(node.left){queue.push(node.left)}if(node.right){queue.push(node.right)}levelSize--;}level++; }return 0; }4. 二叉樹的最低公共節點,判斷節點在左右兩側,則根節點(可能為子樹根)為最小公共節點,否則在左子樹或右子樹中遞歸查找公共節點
function getLastCommonParent(root,node1,node2){if(findNode(root.left,node1)){if(findNode(root.right,node2)){return root;}else{return getLastCommonParent(root.left,node1,node2);}}else{if(findNode(root.left,node2)){return root;}else{return getLastCommonParent(root.right,node1,node2);}} } function findNode(root,node){if(root == null || node == null){return false;}if(root == node){return true;}return findNode(root.left,node) || findNode(root.right,node); }?
轉載于:https://www.cnblogs.com/mengff/p/6870135.html
總結
以上是生活随笔為你收集整理的二叉树节点个数,叶子个数,第K层个数,最低公共节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML的map-area的使用
- 下一篇: java之 Timer 类的使用以及深入