求二叉樹中任意兩個結點間的路徑(C )

2021-08-28 10:17:14 字數 1181 閱讀 7508

#include #include using namespace std;

struct node

};void getnodepath(node* root, node* node, vector& v, bool& flag)

//用後根遍歷的方式尋找node,找到後儲存從該節點到根節點的路徑

}node* creattree()//初始化樹

int main()

i++;

j++;

} cout << res << endl;

cout << i + j;

cout << endl;

system("pause");

return 0;

}

#include #include using namespace std;

struct node

};node* creattree()//初始化樹

node* findfather(node* root, node* node1, node* node2, int& flag)

if (root->val == node2->val)//發現第二個節點

if (left == nullptr && right)//右子樹發現節點,左子樹未發現

return right;

if (right == nullptr && left)//左子樹發現節點,右子樹未發現

return left;

return nullptr;//左右子樹均未發現node1、node2

}int findpath(node* root, node* node, int &flag)

//從最低公共祖先出發尋找到達node的路徑長度

int left = findpath(root->left, node, flag);

int right = findpath(root->right, node, flag);

if (left >= 0)

return left + 1;

else if (right >= 0)

return right + 1;

else

return -1;//未找到返回-1

}int main()

求二叉樹中任意兩個結點的距離

實現步驟 計算跟到第乙個結點的距離 計算跟到第二個結點的距離 計算lca 計算跟到lca結點的距離 結果為 1 2 2 4 因為重複計算了兩次的從跟到lca結點的距離 class node object def init self value 0 self value value self left...

求二叉樹中任意兩結點的距離

與該題的一道相似題為 求二叉樹中結點的最長距離。兩題看似有聯絡,但是做法不同。分析 距離和深度之間存在必然聯絡。如果已知最長距離的兩結點的最低公共根節點r 那麼我們求r 的左右子樹深度相加即最長距離求出。如下圖所示 我們發現a和b是最長距離,他們的最低公共根節點為c,假如我們知道c的左右子樹高度均為...

求乙個二叉樹中任意兩個節點間的距離,

網易有道筆試 1 求乙個二叉樹中任意兩個節點間的距離,兩個節點的距離的定義是 這兩個節點間邊的個數,比如某個孩子節點和父節點間的距離是1,和相鄰兄弟節點間的距離是2,優化時間空間複雜度。c codes as below using system namespace node i2 new node ...