日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二叉树节点个数,叶子个数,第K层个数,最低公共节点

發布時間:2024/4/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树节点个数,叶子个数,第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层个数,最低公共节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。