连通图的最短路径
求如图的最短路径
PS:面试中也问过类似的题
递归遍历即可
class Node { public: Node*left = nullptr; Node*right = nullptr; int value = 0; }; void createNode(Node*root, int v1, int v2, int v3) { root->value = v1; root->left = new Node; root->left->value = v2; root->right = new Node; root->right->value = v3; } void process(Node *node,int total) { if (!node)return ; if (node->left==nullptr && node->right == nullptr) { cout <<" "<< node->value+total << endl; } else { process(node->left, total + node->value); process(node->right, total + node->value); } } int main(int argc, char *argv[]) { Node *root = new Node; createNode(root, 2, 3, 4); { createNode(root->left, 3, 8, 1); createNode(root->right, 4, 1, 2); root->left->right = root->right->left; createNode(root->left->left, 8, 1, 3); createNode(root->left->right, 1, 3, 4); createNode(root->right->right, 2, 4, 6); root->left->left->right = root->left->right->left; root->right->left->right = root->right->right->left; } process(root, 0); system("pause"); return 0; }