数据结构与算法面试题二叉树路径查找
Posted zhiyong_will
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法面试题二叉树路径查找相关的知识,希望对你有一定的参考价值。
题目来源“数据结构与算法面试题80道”。
问题分析:核心是树的遍历,注意题目中“路径”的定义,是从根节点到叶子节点。先序遍历正好是从根节点开始,因此可以利用先序遍历的过程来实现这个过程。
方法:
void print_vector(vector<BinaryTreeNode *> &v)
vector<BinaryTreeNode *>::iterator it;
for (it = v.begin(); it != v.end(); it ++)
printf("%d\\t", (*it)->m_nValue);
printf("\\n");
void pre_order_route(BinaryTreeNode *p, int num, vector<BinaryTreeNode *> &q, int ¤t)
if (NULL == p) return;
current += p->m_nValue;
q.push_back(p);
bool is_leaf = (NULL == p->m_pLeft) && (NULL == p->m_pRight);
if (current == num && is_leaf)
print_vector(q);
if (NULL != p->m_pLeft)
pre_order_route(p->m_pLeft, num, q, current);
if (NULL != p->m_pRight)
pre_order_route(p->m_pRight, num, q, current);
current -= (*(q.end() - 1))->m_nValue;
q.pop_back();
void print_route(BinaryTreeNode *root, int num)
vector<BinaryTreeNode *> q;// 用队列保存已经访问过的节点
int current = 0;
pre_order_route(root, num, q, current);
以上是关于数据结构与算法面试题二叉树路径查找的主要内容,如果未能解决你的问题,请参考以下文章