解法一:求出每個結點作為根結點時的最遠距離(時間複雜度太高)
struct bintreenode
};int depthbin(bintreenode* root)
void findmaxlenofbintree(bintreenode* root, int& maxpath)
farestroot(root->_left, maxpath);
farestroot(root->_right, maxpath);
}int findmaxlen(bintreenode* root)
解法二:**注釋很詳細
struct bintreenode
};void findmaxlenofbintree(bintreenode* root, int& maxlen)
//右子樹為空,該節點的右邊最長距離為0
if (root->_right == null)
if (root->_left != null)
if (root->_right != null)
if (root->_left != null)
else
root->_maxleft = tmp + 1;
} if (root->_right != null)
else
root->_maxright = tmp + 1;
} if (root->_maxleft + root->_maxright > maxlen) }
int findmaxlen(bintreenode* root)
求二叉樹中最遠的兩個節點的距離
求二叉樹中最遠的兩個節點的距離 短短的 中其實涉及到了三道題目 利用已知序列遞迴的建一棵二叉樹遞迴的求一棵樹的深度求二叉樹中距離最遠的兩個節點的距離 利用類似的思想判斷一棵樹是否為平衡二叉樹 利用遞迴求樹的深度的思想,在其中加入乙個最大距離的引用的引數,利用了引用引數的特性,即可求得最大距離,比較簡...
(演算法)二叉樹兩個結點的最遠距離
求二叉樹兩個結點的最遠距離。二叉樹定義如下 class treenode 遍歷每個節點,找出以當前節點為根的最長路徑,然後找出所有最長路徑中的最大值。1 class node void longestpath 1 node proot,int maxlen int rightlen if proot...
求二叉樹中最遠的距離
分為兩種情況來討論 1 二叉樹中最遠的兩個節點經過根節點,如情況a 2 二叉樹中最遠的兩個節點不經過根節點,在其左子樹或者右子樹中 所以 二叉樹中最遠的距離 左子樹距離根節點最遠的節點 右子樹距離根節點最遠的節點 左子樹中最遠的距離,右子樹中最遠的距離 三者的最大值 include include ...