剑指offer之二叉树路径求和
来源:互联网 发布:vb.net boolean 编辑:程序博客网 时间:2024/05/21 19:48
1.题目
二叉树根节点到叶子节点的节点序列称为路径,如果路径上所有节点和为指定的某个数,就打印该路径
10 / \ 5 12 /\ 4 7
有两条路径上的结点和为22,分别是10+5+7和10+12
思路比较简单:先序遍历二叉树,并同步更新直到当前节点为止的sum和path,如果是叶子节点,与指定数比较,若相等,输出序列
2.代码
#include<stdio.h>#include<vector>struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right;};void doFindPath(BinaryTreeNode* root, int expect, std::vector& path, int& current){//注意path和current是引用 current += root->value;//进入本节点,更新本节点对current和path的影响 path.push_back(root->value);//插入队尾 bool isLeaf = root->left==NULL && root->right==NULL; if(isLeaf && current == expect)//打印结果 { std::vector::iterator iter = path.begin(); while(iter != path.end()) { printf("%d ", *iter); iter ++; } printf("\n"); } if(root->left) doFindPath(root->left, expect, path, current); if(root->right) doFindPath(root->right, expect, path, current); current -= root->value;//返回父节点时,删除本节点造成的负面影响 path.pop_back();}void findPath(BinaryTreeNode* root, int expect){ if(root == NULL) return; std::vector path; int current = 0; doFindPath(root, expect, path, current);}
0 0
- 剑指offer之二叉树路径求和
- LintCode-剑指Offer-(376)二叉树路径求和
- 二叉树路径求和
- LintCode 二叉树路径求和
- 剑指offer 打印二叉树路径和
- 【二叉树】二叉树路径求和
- 剑指Offer算法实现之二十五:二叉树中和为某一值的路径
- 剑指Offer之 - 二叉树中和为某一值的路径
- 剑指offer系列之二十三:二叉树中和为某一值得所有路径
- 【剑指offer】之二叉树中和为某一值的路径
- 码农小汪-剑指Offer之22-二叉树中和为某一值的路径
- 剑指offer面试题之二叉树中和为某一值的所有路径
- 剑指offer系列之23:二叉树中和为某一值得路径
- 剑指offer之面试题25:二叉树中和为某一值的路径
- 剑指offer(四十九)之二叉树中和为某一值的路径
- [剑指offer学习心得]之:二叉树中和为某一值的路径
- 剑指Offer之面试题25:二叉树中和为某一值的路径
- (十七)剑指offer之二叉树中和为某一值的路径
- 基于Qt的车载GPS监控系统(4)系统状态
- MYSQL触发器的使用
- Oracle入门
- vmstat 命令
- 88象棋(7)100(8)141(11)
- 剑指offer之二叉树路径求和
- oracle ora-600 undo问题
- C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 檢查是否為BST
- ThinkPHP框架介绍及应用
- BP神经网络
- java之向手机发送短信
- 怎么分析线程栈
- Java Map 按key排序和按Value排序