求二叉樹中節點的最大距離

2021-08-25 12:30:02 字數 1878 閱讀 1689

求二叉樹中節點的最大距離...

如果我們把二叉樹看成乙個圖,

父子節點之間的連線看成是雙向的,

我們姑且定義"距離"為兩節點之間邊的個數。

寫乙個程式,

求一棵二叉樹中相距最遠的兩個節點之間的距離。

計算乙個二叉樹的最大距離有兩個情況:

只需要計算這兩個情況的路徑距離,並取其大者,就是該二叉樹的最大距離。

c# codes as below:

using system;

using system.collections.generic;

using system.text;

treenodenode2 = new treenode();

node2.data = 2;

treenodenode3 = new treenode();

node3.data = 3;

treenodenode4 = new treenode();

node4.data = 4;

treenodenode5 = new treenode();

node5.data = 5;

treenodenode6 = new treenode();

node6.data = 6;

treenodenode7 = new treenode();

node7.data = 7;

treenodenode8 = new treenode();

node8.data = 8;

treenodenode9 = new treenode();

node9.data = 9;

node1.leftson = node2;

node1.rightson = node3;

node3.leftson = node4;

node3.rightson = node5;

node4.leftson = node7;

node5.rightson = node6;

treetree = new tree();

tree.root = node1;

console.writeline(tree.countmaxlength(node1));

tree.print2(tree);

console.readkey();}}

class tree

int length1 = maxlevelcount(node.leftson, 0) + maxlevelcount(node.rightson, 0) + 2;

int length2 = countmaxlength(node.leftson);

int length3 = countmaxlength(node.rightson);

if (length1 > length2)

if (length2 > length3)

return length3;

}///

/// 計算二叉樹的深度

///

private static int maxlevelcount(treenoderoot, int level)

else if (root.leftson == null && root.rightson == null)

else

}///

/// 廣度優先遍歷二叉樹

///

public static void print2(treetree)

else

if (node.leftson != null)

if (node.rightson != null)

}console.writeline();}}

}}class treenode

}

求二叉樹中節點的最大距離

遞迴求解,最大距離總是在一下兩種情況產生 情況1 最大路徑經過root 這個例子中,最長路徑經過root,其距離等於左子樹的高度 1 右子樹的高度 1 在這種情況下 如果只有左子樹,右子樹為空 最大距離 左子樹的高度 1 如果只有右子樹,左子樹為空 最大距離 右子樹的高度 1 如果既有右子樹,又有左...

求二叉樹中節點的最大距離

2010 10 26 16 03 37 分類 資料結構與演算法 標籤 proot 節點pleft pright nmaxleft 字型大小 大中小訂閱 如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩個節點之間邊的個數。寫乙個程式求一顆二叉樹中相距最遠的兩個節點之...

求二叉樹中節點的最大距離

如果我們把二叉樹看成乙個圖,父子之間的連線看成,姑且定義 距離 為兩個之間邊的個數。求一顆二叉樹中相距最遠兩個點之間的距離。struct node bittree int nmaxlen 0 void findmaxlen node proot if proot pleft null if proo...