二叉樹中和為某一值的路徑:
輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的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->rightwww.cppcns.com==null
listall=list
findpath(root->left,target)
findpath(root->right,target)
//如果到了這條路徑的跟結點,並沒有達到目標,就刪掉最後的結點,退回上乙個結點
array_pop(list)
return listall
程式設計客棧php
class treenode }
function findpath($root,$target)
$target-=$root->val;
$list=$root->val;
if($target==0 && $root->left==null && $root->right==null)
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
}*/function findpath($root,$tar程式設計客棧get)
function dfs($root,$target,&$list,&$listall)
$target-=$root->val;
$list=$root->val;
if($target==0 && $root->left==null && $root->right==null)
dfs($root->left,$target,$list,$listall);
dfs($root->right,$target,$list,$listall);
array_pop($list);
return $listall;
}以上就是本次內容的全部例項**,大家可以本次測試一下,感謝大家對我們的支援。
本文標題: php實現二叉樹中和為某一值的路徑方法
本文位址:
二叉樹中和為某一值的路徑
include include using namespace std struct node void find path node r,int exceptedsum,vector path,int cursum node buildbtree int a,int i void preorder...
二叉樹中和為某一值的路徑
要輸出所有的路徑,必須額外用乙個棧來儲存當前路徑資訊。當訪問到節點a時,節點a的資訊要在訪問a的左右子樹時用到,因而,該資訊必須在遍歷a的左右子樹前加入到棧中,而在遍歷完a的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...
二叉樹中和為某一值的路徑
面試題25 二叉樹中和為某一值的路徑 struct binarytreenode int value binarytreenode pleft binarytreenode pright 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...