一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php實現二叉樹中和為某一值的路徑方法

php實現二叉樹中和為某一值的路徑方法

2019-09-01 12:02laozhang PHP教程

在本篇文章中我們給大家分享了php實現二叉樹中和為某一值的路徑方法,有需要的朋友們可以參考下。

二叉樹中和為某一值的路徑:

輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的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;

}

以上就是本次內容的全部實例代碼,大家可以本次測試一下,感謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久香蕉 | 国产精品3p视频 | 99草精品视频 | 操日日 | 疯狂刺激的3p国产在线 | 精品国语对白精品自拍视 | 26uuu久久| 日本一区二区三区视频在线观看 | 色噜噜视频影院 | hh99me福利毛片 | 呜嗯啊野战h呻吟男男双性 污小说在线阅读 | 34g污奶跳舞| 免费午夜剧场 | 2020国产精品永久在线观看 | 国产精品国产三级在线专区 | 日韩在线1 | 青青青草国产线观 | 日本在线看免费 | 国产精品视频一区二区三区经 | 国产亚洲精品看片在线观看 | 好奇害死猫在线观看 | 国产精品日韩在线观看 | 男同志与动人物zozotv | 精品国产精品人妻久久无码五月天 | 青青在线观看视频 | 激情另类国内一区二区视频 | 青草青青在线视频观看 | 欧美老人与小伙子性生交 | 亚洲欧美成人综合 | videos欧美肥婆| 男人的私人影院 | 九九热综合 | 亚洲日本va午夜中文字幕 | 99精品视频一区在线观看miya | 98pao强力打造高清免费 | 国产成人综合手机在线播放 | 美女扒开腿让男人桶爽免费gif | 国产精品九九免费视频 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 日韩一级片在线观看 | 按摩院已婚妇女中文字幕 |