取子樹演算法

2022-02-15 14:12:38 字數 1154 閱讀 3943

<?php

/** *

* 查詢一棵樹的子樹

* @var unknown_type

* @author tianquanjun

* */

class demo

//遍歷樹中的每乙個節點,看其是否為指點節點的子樹節點

public function handle($id)

} return $data;

} //判斷節點是否是指定id的子樹節點

private function is_son_node($id,$node)

//節點的父id恰好是指定的節點,是其兒子節點

if($node['pid'] == $id)else }

//根據id獲取父節點完整資訊

private function get_parent_node($id)

} }}//構造一棵樹,陣列表示.id表示節點本身編號,pid表示父節點的編號

$tree = array(

array('id'=>1,'pid'=>'','name'=>'a'),//root

array('id'=>2,'pid'=>'1','name'=>'b'),

array('id'=>3,'pid'=>'1','name'=>'c'),

array('id'=>4,'pid'=>'1','name'=>'d'),

array('id'=>5,'pid'=>'2','name'=>'e'),

array('id'=>6,'pid'=>'2','name'=>'f'),

array('id'=>7,'pid'=>'3','name'=>'g'),

array('id'=>8,'pid'=>'4','name'=>'h'),

array('id'=>9,'pid'=>'7','name'=>'i'),

array('id'=>10,'pid'=>'7','name'=>'j'),

array('id'=>11,'pid'=>'8','name'=>'k'),

);$id = 2;

$obj = new demo($tree);

$result = $obj->handle($id);

echo "";

print_r($result);

Git 4 子樹拉取指令碼

windows指令碼指令碼放專案根目錄下,具體根據自己專案環境來!命令解釋 拉取最新 刪除子樹 提交新增子樹 再提交 windows merge common.bat git pull rd s q 子樹包名 git add a git commit m delete common git push...

最大子樹組(分治演算法)

最大子樹組 include 返回乙個下標元組劃定跨越中點的最大子陣列的邊界,並返回最大子陣列中值的和 int find max crossing subarray int a,int low,int mid,int high sum 0 for j mid 1 j high j return lef...

演算法面試題 拓撲結構相同子樹

題目 解析 這個題目的目的很明確,就是判斷a是否包含b。這裡的做法是對兩顆二叉樹分別求先序遍歷,接著比較。但是要注意的是,先序遍歷需要進行特殊處理。舉例 先對整a棵樹進行先序遍歷,序列為12453。情況一 假設b二叉樹只有乙個節點3,那麼b子樹的先序遍歷序列就是3,接著判斷3是否為12453的子串,...