129. Sum Root to Leaf Numbers

来源:互联网 发布:ipad做笔记软件 编辑:程序博客网 时间:2024/05/21 19:41

129. Sum Root to Leaf Numbers

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

An example is the root-to-leaf path 1->2->3 which represents the number 123.

Find the total sum of all root-to-leaf numbers.

For example,

    1   / \  2   3

The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.

Return the sum = 12 + 13 = 25.

Code:

#include<iostream>using namespace std;class node {public:int num;//int sum;node * left;node * right;node() {}node(int n) { this->num = n; }};void insert(node * t, int num){node *corrent = t;if (corrent->num < num&&corrent->right != NULL)insert(corrent->right, num);else if (corrent->num > num&&corrent->left != NULL)insert(corrent->left, num);else{if (corrent->num < num)corrent->right = new node(num);else if (corrent->num > num)corrent->left = new node(num);return;}}/*void bianli(node *t,int &sum){node *corrent = t;if (corrent->left == NULL && corrent->right == NULL){cout << corrent->sum << endl;sum += corrent->sum;return;}if (corrent->left != NULL){corrent->left->sum += corrent->sum*10;bianli(corrent->left,sum);}if (corrent->right != NULL){corrent->right->sum += corrent->sum*10;bianli(corrent->right,sum);}}*/int bianli(node *t,int pre){if (t == NULL)return 0;else {int tmp = pre * 10 + t->num;if (t->left == NULL&&t->right == NULL){cout << tmp << endl;return tmp;}else{return bianli(t->left, tmp) + bianli(t->right, tmp);}}}int main(){node *T = NULL;T = new node(5);int sum=0;insert(T, 0);insert(T, 1);insert(T, 2);insert(T, 3);insert(T, 4);insert(T, 8);insert(T, 6);insert(T, 7);insert(T, 9);sum=bianli(T,0);//cout << "T->left:" << T->left->num << endl;//cout << "T->right:" << T->right->num << endl;cout << sum<<endl;system("pause");}



0 0
原创粉丝点击