求如图的最短路径。面试中也问过类似的题。

递归遍历即可解决此类问题。

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;
                }