求如图的最短路径
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;
}