#include #include templatestruct bnode
void visit()
t data;
bnode*left;
bnode*right;
};// 獲取訪問路徑
templatestd::list*>* getpath(bnode*root, bnode*node)
iter = iter->left;
}while (!plist->empty() && iter == plist->back()->right)
if (!plist->empty()) }}
return null;
}// 計算任意兩個節點間的距離
templateint distance(bnode*root, bnode*node1, bnode*node2)
size_t len = plist1->size() + plist2->size();
delete plist1;
delete plist2;
return len;
}return 0;
}// 測試**
int main()
delete plist;*/
std::cout << distance(&root, &nodef, &nodeg) << std::endl;
return 0;
}
二叉樹兩個節點間的距離
距離是指連線兩個節點需要的最小的邊的條數。1找到節點的共同祖先 2 找到節點到共同祖先的距離dist,可以想到這個距離disthelper 節點到root距離 root到共同祖先的距離 3 兩個節點間距離 節點1到共同祖先的距離dist1 節點2到共同祖先的距離dist2 節點1到root距離 ro...
求乙個二叉樹中任意兩個節點間的距離,
網易有道筆試 1 求乙個二叉樹中任意兩個節點間的距離,兩個節點的距離的定義是 這兩個節點間邊的個數,比如某個孩子節點和父節點間的距離是1,和相鄰兄弟節點間的距離是2,優化時間空間複雜度。c codes as below using system namespace node i2 new node ...
求二叉樹中任意兩個結點的距離
實現步驟 計算跟到第乙個結點的距離 計算跟到第二個結點的距離 計算lca 計算跟到lca結點的距離 結果為 1 2 2 4 因為重複計算了兩次的從跟到lca結點的距離 class node object def init self value 0 self value value self left...