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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Leedcode1-求树的最小高度

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leedcode1-求树的最小高度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include<iostream> #include<algorithm> #include<queue> using namespace std; //5種情況:空樹;沒有子樹;只有左/右子樹;有倆子樹; struct BinaryNode {BinaryNode *left;BinaryNode *right;int data; }; struct BinaryTree {BinaryNode *head; }; //后序遍歷遞歸 //如果左右子樹都存在,則取其最小 //如果左右子樹沒有其中一個,-->說明此根下有葉子結點。所以取其最大 int getDepth(BinaryNode *node) {if (node == NULL)return 0;int left_depth = getDepth(node->left);int right_depth = getDepth(node->right);if (left_depth && right_depth) //左子樹和右子樹都存在return min(left_depth, right_depth) + 1;elsereturn max(left_depth, right_depth) + 1; } //層次遍歷,使用隊列完成 int getDepth2(BinaryNode *root) {if (root == NULL)return 0;queue<BinaryNode *>q;q.push(root);int depth = 0;while (!q.empty()) //q存放當前層結點,qt存放下一層結點{queue<BinaryNode *>qt;depth++;while (!q.empty()){BinaryNode *temp = q.front();cout << temp->data << endl;q.pop();if (!temp->left && !temp->right){return depth;}if (temp->left)qt.push(temp->left); if (temp->right)qt.push(temp->right);}q = qt;}return depth; }int main() {/*7/ \8 9/ \4 10/ \2 5 */BinaryTree btree;BinaryNode node1 = { NULL,NULL,7};BinaryNode node2 = { NULL,NULL,9 };BinaryNode node3 = { NULL,NULL,8 };BinaryNode node4 = { NULL,NULL,4 };BinaryNode node5 = { NULL,NULL,2 };BinaryNode node6 = { NULL,NULL,5 };BinaryNode node7 = { NULL,NULL,10 };btree.head = &(node1);node1.left = &(node3);node1.right = &(node2);node2.right = &(node7);node3.left = &(node4);node4.left = &(node5);node4.right = &(node6);int height = getDepth2(&(node1));cout << height << endl;}

運行結果:

總結

以上是生活随笔為你收集整理的Leedcode1-求树的最小高度的全部內容,希望文章能夠幫你解決所遇到的問題。

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