求二叉樹中最遠的兩個節點的距離

2021-07-24 20:32:44 字數 1038 閱讀 7608

求二叉樹中最遠的兩個節點的距離

短短的**中其實涉及到了三道題目:

利用已知序列遞迴的建一棵二叉樹遞迴的求一棵樹的深度求二叉樹中距離最遠的兩個節點的距離

利用類似的思想判斷一棵樹是否為平衡二叉樹;

:利用遞迴求樹的深度的思想,在其中加入乙個最大距離的引用的引數,利用了引用引數的特性,即可求得最大距離,比較簡單,下面列出**及圖示;

給出兩組測試用例的圖示:

//**實現

#include

using

namespace

std;

//先建一顆二叉樹

struct node

};class binarytree

//前序遞迴建樹

node* _greattree(int* arr, size_t size,int invalid, int& index)

return root;

}//求二叉樹最遠兩個節點的距離

void maxdistant()

protected://保護實現細節

//方式一 每個節點遍歷多次,效率低

bool _isbanlanceone(node* root)

//方式二 後序遍歷的方式,邊遍歷邊判斷

bool _isbanlancetwo(node* root, int& heigh)

int _maxdistance(node* root, int& maxlenth)

};int main()

;int

array[15] = ;

binarytree b(array,15);

b.maxdistant();

system("pause");

return

0;}

求二叉樹中最遠的距離

分為兩種情況來討論 1 二叉樹中最遠的兩個節點經過根節點,如情況a 2 二叉樹中最遠的兩個節點不經過根節點,在其左子樹或者右子樹中 所以 二叉樹中最遠的距離 左子樹距離根節點最遠的節點 右子樹距離根節點最遠的節點 左子樹中最遠的距離,右子樹中最遠的距離 三者的最大值 include include ...

二叉樹中最遠的兩個結點的距離

解法一 求出每個結點作為根結點時的最遠距離 時間複雜度太高 struct bintreenode int depthbin bintreenode root void findmaxlenofbintree bintreenode root,int maxpath farestroot root l...

二叉樹系列問題 求二叉樹中最遠節點的距離

求二叉樹中最遠節點的距離,我們首先要對最遠距離有清晰的認識,最遠距離分為以下三類情況 因此我們在計算距離時總要與前一次的距離作比較,只有當此次左右距離之和大於max值才更改max的值,我們可以使用後續遍歷來計算最遠距離,此時時間複雜度為o n 使用前序遍歷也是可以的,但時間複雜度為o n n 綜合比...