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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【编程题目】求二叉树中节点的最大距离

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【编程题目】求二叉树中节点的最大距离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第 11 題(樹)
求二叉樹中節點的最大距離...
如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,
我們姑且定義"距離"為兩節點之間邊的個數。
寫一個程序,
求一棵二叉樹中相距最遠的兩個節點之間的距離。

?

思路:二叉樹結構中只設了左右子節點的指針。

設單個結點的深度為0。

用后序遍歷,得到每個結點為根的子樹的最大深度。maxdistance記錄該結點(左子樹深度+右子樹深度 + 2)是否超過已有的最遠距離,若超過更新。

關鍵:空指針的深度設為-1,這樣避免了復雜的分類討論。

? ? ? ? ? ? ?樹每個結點記錄的深度

  ? ? ? ? ? ? (4) ? ?

? ?   ? ? ? ?/ ??

? ? ? ?  (3) ? :舉例計算 子樹中最大的深度是2,當前結點最大深度是2+1 ? ?整棵樹最大距離為 1 + 2 + 2 = 5 比已有的

? ? ?   / ? ? \ ? ? ? ? ? ? ? 整棵樹的最大距離大,更新。

?   (1) ? ? (2)

? ? ? ?/ ? ? ? ? / ? ? \

? (0) ? ? (1) ? ? (0)

? ? ? ? ? ? ?/

? ? ? ? ?(0) :其左右子樹均為空,記其子樹的最大深度為-1 當前結點的深度為 -1 + 1 = 0

?

代碼如下:唯一不滿意的是maxdistance設為了全局變量,看起來很丑。

/* 第 11 題(樹) 求二叉樹中節點的最大距離... 如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的, 我們姑且定義"距離"為兩節點之間邊的個數。 寫一個程序, 求一棵二叉樹中相距最遠的兩個節點之間的距離。 start time 16:17 end time 17:20 */#include <stdio.h> #include <stdlib.h>typedef struct BiTree {int data;BiTree * p_left, * p_right; }BiTree;void CreateBiTree(BiTree * &T) {int d;printf("please input data number:");scanf("%d", &d);if (d != 0){T = (BiTree *)malloc(sizeof(BiTree));T->data = d;T->p_left = NULL;T->p_right = NULL;CreateBiTree(T->p_left);CreateBiTree(T->p_right);} }//遞歸 int maxdistance = 0; int BiTreeMaxDistance(BiTree * T) //利用后序遍歷 { if (T == NULL){return -1;}else{int l = BiTreeMaxDistance(T->p_left);int r = BiTreeMaxDistance(T->p_right);int distance = l + r + 2;maxdistance = (distance > maxdistance) ? distance : maxdistance;return (l > r) ? l + 1 : r + 1;} }int main() {BiTree * T = NULL;CreateBiTree(T);BiTreeMaxDistance(T);printf("the max distance of the tree is %d.\n", maxdistance);return 0; }

?

網上找答案,發現居然是《編程之美》里的題。然后,書里的代碼也用了全局變量...感覺書里的方法沒有我的方法簡潔,代碼也比我的看起來復雜。不過整體思路還是一樣的。

又看了幾個人的博客,發現有幾個和我的思路是一樣的。真可謂英雄所見略同啊。

總結

以上是生活随笔為你收集整理的【编程题目】求二叉树中节点的最大距离的全部內容,希望文章能夠幫你解決所遇到的問題。

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