国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

怎樣使用PHP排序二叉樹

2020-03-22 18:42:25
字體:
來源:轉載
供稿:網友
這次給大家帶來怎樣使用PHP排序二叉樹,使用PHP排序二叉樹的注意事項有哪些,下面就是實戰案例,一起來看一下。

這里演示了排序二叉樹節點的插入,中序遍歷,極值的查找和特定值的查找的功能.

基本沒有提供什么概念和定義.建議先簡單了解一下本文提供的幾個概念在來看本文.

實際上,只是簡單的提供了代碼,注釋也很少,各位辛苦了.

二叉樹:在計算機科學中,二叉樹是每個節點最多有兩個子樹的樹結構。

排序二叉樹: 左孩子節點的值小于父節點的值,右孩子節點的值大于父節點的值.

幾個概念:

根節點
葉子節點
左子樹
右子樹
中序遍歷
前序遍歷
后序遍歷
二叉樹查找

中序遍歷:

先遍歷左子樹,在遍歷本節點,在遍歷右節點.遍歷之后的結果就是排序好之后的結果

// created by 曲朋維// 排序二叉樹// 完成以下任務.// 1. 將節點插入到對應位置// 2. 使用中序遍歷遍歷這個二叉樹// 3. 找到這個二叉樹的極值// 4. 搜索一個特定的值html' target='_blank'>class Node{  public $key,$left,$right;  public function construct($key)  {    $this->key = $key;  }}class BinaryTree{  public $root;  public $sortArr = [];  // 插入節點  public function insertNode($node,$newNode){    if ($node->key < $newNode->key){      // 如果父節點小于子節點,插到右邊      if (empty($node->right)){        $node->right = $newNode;      }else{        $this->insertNode($node->right,$newNode);      }    }elseif ($node->key > $newNode->key){      // 如果父節點大于子節點,插到左邊      if (empty($node->left)){        $node->left = $newNode;      }else{        $this->insertNode($node->left,$newNode);      }    }  }  public function insert($key){    $newNode = new Node($key);    if (empty($this->root)){      $this->root = $newNode;    }else{      $this->insertNode($this->root,$newNode);    }  }  // 中序遍歷  public function midSort(){    $this->midSortNode($this->root);  }  public function midSortNode($node){    if (!empty($node)){      $this->midSortNode($node->left);      array_push($this->sortArr,$node->key);      $this->midSortNode($node->right);    }  }  // 尋找極值  public function findMin(){    //不斷的找它的左子樹,直到這個左子樹的節點為葉子節點.    if (!empty($this->root)){      $this->findMinNode($this->root);    }  }  public function findMinNode(Node $node){    if (!empty($node->left)){      $this->findMinNode($node->left);    }else{      echo '這個二叉樹的最小值為:'.$node->key;    }  }  public function findMax(){    if (!empty($this->root)){      $this->findMaxNode($this->root);    }  }  public function findMaxNode(Node $node){    if (!empty($node->right)){      $this->findMaxNode($node->right);    }else{      echo '這個二叉樹的最大值為:'.$node->key;    }  }  // 查找特定的值  public function find($val = ''){    if (!empty($val)){      $this->findNode($this->root,$val);    }  }  public function findNode(Node $node,$val){    if ($node->key == $val){      echo '找到'.$val.'了';    }else if ($node->key > $val){      // 如果 父節點的值 大于要查找的值,那么查找它的左子樹      if (!empty($node->left)){        $this->findNode($node->left,$val);      }else{        echo '沒有這個東西!';      }    }else if ($node->key < $val){      if (!empty($node->right)){        $this->findNode($node->right,$val);      }else{        echo '沒有這個東西!';      }    }  }}$tree = new BinaryTree();// 節點插入$nodes = array(8,3,10,1,6,14,4,7,13);foreach ($nodes as $value){  $tree->insert($value);}// 中序遍歷//$tree->midSort();//print_r($tree->sortArr);// 尋找極值//$tree->findMin();//$tree->findMax();// 查找特定的值$tree->find(7);echo "<br/>";$tree->find(11);

運行結果:

找到7了
沒有這個東西!

相信看了本文案例你已經掌握了方法,更多精彩請關注 其它相關文章!

推薦閱讀:

如何使JS數組與JSON對象動態實現添加、修改、刪除

如何使用Vue+Nuxt.js 實現服務端渲染

以上就是怎樣使用PHP排序二叉樹的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣化县| 南阳市| 昌邑市| 九台市| 平果县| 贵溪市| 尼木县| 广州市| 琼中| 双辽市| 富源县| 伽师县| 晴隆县| 类乌齐县| 永顺县| 长寿区| 会同县| 大余县| 黄平县| 高邮市| 吴旗县| 济源市| 皮山县| 思南县| 甘南县| 若尔盖县| 弋阳县| 合阳县| 阿拉尔市| 洛宁县| 平安县| 临洮县| 乐亭县| 大厂| 大石桥市| 集贤县| 马龙县| 玉田县| 新建县| 牟定县| 大丰市|