日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树节点的遍历,查找,删除(前序,中序,后序)

發(fā)布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树节点的遍历,查找,删除(前序,中序,后序) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二叉樹模板類:

class BinaryTree {private Node root;public void setRoot(Node root) {this.root = root;}//刪除結點public void delNode(int no) {}//前序遍歷public void preOrder() {}//中序遍歷public void infixOrder() {}//后序遍歷public void postOrder() {}//前序遍歷public HeroNode preOrderSearch(int no) {}//中序遍歷public HeroNode infixOrderSearch(int no) {}//后序遍歷public HeroNode postOrderSearch(int no) {} }

樹節(jié)點模板類:

class HeroNode {private int no;private String name;private HeroNode left; //默認nullprivate HeroNode right; //默認null

1.遍歷

樹的遍歷分為: 廣度優(yōu)先遍歷:一層一層從左到右進行遍歷(借助隊列) 深度優(yōu)先遍歷:①先序遍歷、每個結點的遍歷都滿足根結點、左結點、右結點(均借助棧)②中序遍歷、每個結點的遍歷都滿足左結點、根結點、右結點③后序遍歷、每個結點的遍歷都滿足左結點、右結點、根結點

  • 前序遍歷:先輸出父節(jié)點,再遍歷左子樹和右子樹
public void preOrder() {if(this.root != null) {this.root.preOrder();}else {System.out.println("二叉樹為空,無法遍歷");}}
  • 中序遍歷:先遍歷左子樹,再輸出父節(jié)點,再遍歷右子樹
public void infixOrder() {if(this.root != null) {this.root.infixOrder();}else {System.out.println("二叉樹為空,無法遍歷");}}
  • 后序遍歷:先輸出左子樹,再遍歷右子樹 ,最后輸出父節(jié)點
public void postOrder() {if(this.root != null) {this.root.postOrder();}else {System.out.println("二叉樹為空,無法遍歷");}}

2.查找

  • 前序查找
public Node preOrderSearch(int no) {System.out.println("進入前序遍歷");//比較當前結點是不是if(this.no == no) {return this;}//1.則判斷當前結點的左子節(jié)點是否為空,如果不為空,則遞歸前序查找//2.如果左遞歸前序查找,找到結點,則返回Node resNode = null;if(this.left != null) {resNode = this.left.preOrderSearch(no);}if(resNode != null) {//說明我們左子樹找到return resNode;}//1.左遞歸前序查找,找到結點,則返回,否繼續(xù)判斷,//2.當前的結點的右子節(jié)點是否為空,如果不空,則繼續(xù)向右遞歸前序查找if(this.right != null) {resNode = this.right.preOrderSearch(no);}return resNode;}
  • 中序查找
public Node infixOrderSearch(int no) {//判斷當前結點的左子節(jié)點是否為空,如果不為空,則遞歸中序查找Node resNode = null;if(this.left != null) {resNode = this.left.infixOrderSearch(no);}if(resNode != null) {return resNode;}System.out.println("進入中序查找");//如果找到,則返回,如果沒有找到,就和當前結點比較,如果是則返回當前結點if(this.no == no) {return this;}//否則繼續(xù)進行右遞歸的中序查找if(this.right != null) {resNode = this.right.infixOrderSearch(no);}return resNode;}
  • 后序查找
public Node postOrderSearch(int no) {//判斷當前結點的左子節(jié)點是否為空,如果不為空,則遞歸后序查找Node resNode = null;if(this.left != null) {resNode = this.left.postOrderSearch(no);}if(resNode != null) {//說明在左子樹找到return resNode;}//如果左子樹沒有找到,則向右子樹遞歸進行后序遍歷查找if(this.right != null) {resNode = this.right.postOrderSearch(no);}if(resNode != null) {return resNode;}System.out.println("進入后序查找");//如果左右子樹都沒有找到,就比較當前結點是不是if(this.no == no) {return this;}return resNode;}

3. 刪除節(jié)點(基于無序的二叉樹)

//遞歸刪除結點//1.如果刪除的節(jié)點是葉子節(jié)點,則刪除該節(jié)點//2.如果刪除的節(jié)點是非葉子節(jié)點,則刪除該子樹public void delNode(int no) {//思路/** 1. 因為我們的二叉樹是單向的,所以我們是判斷當前結點的子結點是否需要刪除結點,而不能去判斷當前這個結點是不是需要刪除結點.2. 如果當前結點的左子結點不為空,并且左子結點 就是要刪除結點,就將this.left = null; 并且就返回(結束遞歸刪除)3. 如果當前結點的右子結點不為空,并且右子結點 就是要刪除結點,就將this.right= null ;并且就返回(結束遞歸刪除)4. 如果第2和第3步?jīng)]有刪除結點,那么我們就需要向左子樹進行遞歸刪除5. 如果第4步也沒有刪除結點,則應當向右子樹進行遞歸刪除.*///2. 如果當前結點的左子結點不為空,并且左子結點 就是要刪除結點,就將this.left = null; 并且就返回(結束遞歸刪除)if(this.left != null && this.left.no == no) {this.left = null;return;}//3.如果當前結點的右子結點不為空,并且右子結點 就是要刪除結點,就將this.right= null ;并且就返回(結束遞歸刪除)if(this.right != null && this.right.no == no) {this.right = null;return;}//4.我們就需要向左子樹進行遞歸刪除if(this.left != null) {this.left.delNode(no);}//5.則應當向右子樹進行遞歸刪除if(this.right != null) {this.right.delNode(no);}}

總結

以上是生活随笔為你收集整理的树节点的遍历,查找,删除(前序,中序,后序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产xxxxxxxxx | 日韩高清不卡在线 | 高潮毛片无遮挡高清免费 | 天天操夜夜操视频 | 日本三级视频在线播放 | www.蜜臀av| 日本在线高清 | 水密桃av| 日本韩国欧美一区二区三区 | 超碰人人91| 国产肥老妇视频 | 无码精品黑人一区二区三区 | 黄色视屏免费 | 天天综合日日夜夜 | videos另类灌满极品另类 | 国产精品久久久久久妇女6080 | 大桥未久视频在线观看 | 精品婷婷色一区二区三区蜜桃 | 国产九色在线播放九色 | 在线一区二区三区四区 | 国内外成人在线视频 | 999国产精品视频免费 | 操日本老太太 | 国产二区在线播放 | 野花中文免费观看6 | 国产靠逼网站 | 亚洲av无码乱码在线观看性色 | 精品国产乱码久久久久久蜜臀 | 日韩xxxxxxxxx| 国产一区二区三区久久 | 亚洲av无码乱码在线观看性色 | 色999在线 | 亚洲国产午夜 | 欧美色图在线视频 | 涩涩涩涩涩涩涩涩涩 | 黄色免费91| 日日夜精品 | 高清一区二区三区四区 | 极品人妻一区二区三区 | 色婷婷午夜 | 国产精品二区视频 | 久久久久久爱 | 欧美日本成人 | 久久黄色 | 日韩不卡一区二区三区 | 91视频麻豆| 国产精品欧美日韩 | 伊人激情在线 | 麻豆视频在线观看免费网站黄 | 99视频国产精品 | 久久艹中文字幕 | 蜜桃9999 | 求一个黄色网址 | 日b视频在线观看 | 国产精品呻吟久久 | 激情黄色av | 日本在线黄色 | 日本成人在线一区 | 国产91在线观看 | 中文字幕2区 | 伊人91视频 | 香蕉视频国产在线观看 | 国产夜色精品一区二区av | 久久国产精品毛片 | 国产白丝一区二区三区 | 成人3d动漫一区二区三区 | 美女扒开尿口让男人桶 | 色哟哟网站入口 | 欧美午夜在线观看 | 韩国一级片在线观看 | 国产h自拍| 网址av| 日韩少妇一区二区 | 亚洲一区二区中文字幕 | 欧美三级图片 | 人人妻人人藻人人爽欧美一区 | 欧美电影一区二区三区 | 日韩精品极品 | 日韩精品在线观看一区二区 | 国产99久久久久久免费看 | 中文字幕在线观看一区二区三区 | 久久久久人妻一区二区三区 | 国产毛片一区二区三区 | 久久久久久国产精品日本 | 日韩网红少妇无码视频香港 | 天堂在线网| 国久久| 91精品国产一区二区 | 国产精品69久久久 | 大香伊人| 成人3d动漫一区二区三区91 | 69视频在线观看免费 | 天天搞夜夜 | 男女瑟瑟网站 | 国产精品无码免费专区午夜 | 久青草视频在线 | www.日日干| 国产精品免费大片 | 日韩av中文字幕在线免费观看 |