php实现二叉树中和为某一值的路径方法


Posted in PHP onOctober 14, 2018

二叉树中和为某一值的路径:

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

思路:

1、二叉树的前序遍历,中左右顺序

2、把目标值target传进去,target-=val

3、target为0并且left和right都为null,达到叶结点

4、函数外部两个数组,list数组存一条路径,listAll数组存所有路径

FindPath(root,target)

  if root==null return listAll

  list[]=root.val

  target-=root.val

  if target==0 && root->left==null && root->right==null

    listAll[]=list

  FindPath(root->left,target)

  FindPath(root->right,target)

  //如果到了这条路径的跟结点,并没有达到目标,就删掉最后的结点,退回上一个结点

  array_pop(list)

  return listAll
<?php

class TreeNode{

  var $val;

  var $left = NULL;

  var $right = NULL;

  function __construct($val){

    $this->val = $val;

  }  

}

 

function FindPath($root,$target)

{

    static $list=array();

    static $listAll=array();

    if($root==null){

        return $listAll;

    }  

    $target-=$root->val;

    $list[]=$root->val;

    if($target==0 && $root->left==null && $root->right==null){

        $listAll[]=$list;

    }  

    FindPath($root->left,$target);

    FindPath($root->right,$target);

    array_pop($list);

    return $listAll;

}

 

$node10=new TreeNode(10);

$node5=new TreeNode(5);

$node12=new TreeNode(12);

$node4=new TreeNode(4);

$node7=new TreeNode(7);

 

$node10->left=$node5;

$node10->right=$node12;

$node5->left=$node4;

$node5->left=$node7;

 

$tree=$node10;

 

$res=FindPath($tree,22);

var_dump($res);
<?php

/*class TreeNode{

  var $val;

  var $left = NULL;

  var $right = NULL;

  function __construct($val){

    $this->val = $val;

  }

}*/

function FindPath($root,$target)

{

  $list=array();

  $listAll=array();

  $res=dfs($root,$target,$list,$listAll);

  return $res;

}

 

function dfs($root,$target,&$list,&$listAll)

{

 

    if($root==null){

        return $listAll;

    }  

    $target-=$root->val;

    $list[]=$root->val;

    if($target==0 && $root->left==null && $root->right==null){

         

        $listAll[]=$list;

    }  

    dfs($root->left,$target,$list,$listAll);

    dfs($root->right,$target,$list,$listAll);

    array_pop($list);

    return $listAll;

}

以上就是本次内容的全部实例代码,大家可以本次测试一下,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 #PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 #PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 #PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 #PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 #PHP
PHP中常见的密码处理方式和建议总结
Oct 14 #PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 #PHP
You might like
PHP数字格式化
2006/12/06 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
跟我学习javascript的严格模式
2015/11/16 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
基于node.js实现微信支付退款功能
2017/12/19 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
vue-router传参用法详解
2019/01/19 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
Python变量类型知识点总结
2019/02/18 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
使用python模拟高斯分布例子
2019/12/09 Python
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
优秀教师先进事迹
2014/01/22 职场文书
丑小鸭教学反思
2014/02/03 职场文书
合作协议书
2014/04/23 职场文书
护理专业自荐书
2014/06/04 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
英文产品推荐信
2015/03/27 职场文书
硕士学位申请报告
2015/05/15 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
感恩父母主题班会
2015/08/12 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书