Advertisement

经典算法学习——求二叉树节点之和等于sum的路径

阅读量:

在二叉树结构中,叶子节点的数量与从根节点延伸至各叶子节点的路径数量相等。若为每个节点赋予一个data值,则每条路径上所有节点的data值之和即为sum。现根据给定的sum值,需要确定满足条件的路径有哪些。相关代码已上传至https://github.com/chenyufeng1991/BinaryTreePath>。

该问题的基本解决思路是采用递归方式进行查找。在遍历过程中,每当访问到一个节点时,便将该节点的值存入vector容器中。当抵达叶子节点时,计算当前vector中所有元素的总和,并与给定的sum进行比较。若两者相等,则说明当前路径满足条件,可将其输出。若不相等,则清空vector,并继续进行后续的查找操作。

核心代码如下:

复制代码
 void PathLength(Node *node, vector<int> &vec, int sum)

    
 {
    
     if (node == NULL)
    
     {
    
     return;
    
     }
    
  
    
     if (node ->lChild != NULL)
    
     {
    
     vec.push_back(node->data);
    
     PathLength(node->lChild,vec,su

全部评论 (0)

还没有任何评论哟~