1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Tree的遍歷與node定義學習

          來源:互聯網轉載 時間:2024-01-29 08:01:23
          /* * 二叉樹節點 */public class Node {//數據項public long data;//左子節點public Node leftChild;//右子節點public Node rightChild;/** * 構造方法 * @param data */public Node(long data) {this.data = data;}}/* * 二叉樹 */public class Tree {//根節點public Node root;/** * 插入節點 * @param value */public void insert(long value,String sValue) {//封裝節點Node newNode = new Node(value);//引用當前節點Node current = root;//引用父節點Node parent;//如果root為null,也就是第一插入的時候if(root == null) {root = newNode;return;} else {while(true) {//父節點指向當前節點parent = current;//如果當前指向的節點數據比插入的要大,則向左走if(current.data > value) {current = current.leftChild;if(current == null) {parent.leftChild = newNode;return;}} else {current = current.rightChild;if(current == null) {parent.rightChild = newNode;return;}}}}}/** * 查找節點 * @param value */public Node find(long value) {//引用當前節點,從根節點開始Node current = root;//循環,只要查找值不等于當前節點的數據項while(current.data != value) {//進行比較,比較查找值和當前節點的大小if(current.data > value) {current = current.leftChild;} else {current = current.rightChild;}//如果查找不到if(current == null) {return null;}}return current;}/** * 刪除節點  刪除節點需要父子兩層指針 * @param value */public boolean delete(long value) {//引用當前節點,從根節點開始Node current = root;//應用當前節點的父節點Node parent = root;//是否為左節點boolean isLeftChild = true;while(current.data != value) {parent = current;//進行比較,比較查找值和當前節點的大小if(current.data > value) {current = current.leftChild;isLeftChild = true;} else {current = current.rightChild;isLeftChild = false;}//如果查找不到if(current == null) {return false;}}//刪除葉子節點,也就是該節點沒有子節點if(current.leftChild == null && current.rightChild == null) {if(current == root) {root = null;} else if(isLeftChild) {parent.leftChild = null;} else {parent.rightChild = null;}//current的右節點空,判斷current是parrent的左孩子?右孩子?決定current的leftchild插入位置} else if(current.rightChild == null) {if(current == root) {root = current.leftChild;}else if(isLeftChild) {parent.leftChild = current.leftChild;} else {//是右節點,比parent節點要大parent.rightChild = current.leftChild;}//current只有右孩子的情況,其次判斷current是parent的左右孩子,判斷插入parent的位置} else if(current.leftChild == null) {if(current == root) {root = current.rightChild;} else if(isLeftChild) {//current是parent的左孩子parent.leftChild = current.rightChild;} else {//current是parent的右孩子parent.rightChild = current.rightChild;}} else {//current既有左孩子,也有右孩子Node successor = getSuccessor(current);// 先處理刪除節點的父if(current == root) {root = successor;} else if(isLeftChild) {parent.leftChild = successor;} else{parent.rightChild = successor;}// 處理刪除節點的左節點successor.leftChild = current.leftChild;}return true;}public Node getSuccessor(Node delNode) {Node successor = delNode;Node successorParent = delNode;Node current = delNode.rightChild;//尋找右子樹的最左側節點,比被刪除節點稍微大一點while(current != null) {successorParent = successor;successor = current;current = current.leftChild; // 刪除節點的右子樹的最左側孩子節點}//被刪除的右孩子,不等于找到的最左側節點,successor就是右子樹的最左側孩子,successorParent是父節點//不等于就是找到了,if(successor != delNode.rightChild) {//將最左節點的右節點給父節點是左,比較小,所以放再leftsuccessorParent.leftChild = successor.rightChild;// 直接放到位置了successor.rightChild = delNode.rightChild;}return successor;}/** * 前序遍歷 */public void frontOrder(Node localNode) {if(localNode != null) {//訪問根節點System.out.println(localNode.data + " ");//前序遍歷左子樹frontOrder(localNode.leftChild);//前序遍歷右子樹frontOrder(localNode.rightChild);}}/** * 中序遍歷 */public void inOrder(Node localNode) {if(localNode != null) {//中序遍歷左子樹inOrder(localNode.leftChild);//訪問根節點System.out.println(localNode.data + " ");//中旬遍歷右子樹inOrder(localNode.rightChild);}}/** * 后序遍歷 */public void afterOrder(Node localNode) {if(localNode != null) {//后序遍歷左子樹afterOrder(localNode.leftChild);//后序遍歷右子樹afterOrder(localNode.rightChild);//訪問根節點System.out.println(localNode.data + " " );}}}
          標簽:treenode-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          世界上最小的裙子?世界上最短的裙子是苗寨的裙子。如果你偶爾去山里的這個村子看看,你會看到很多人會穿這種裙子。在當地穿這樣的短裙是一種習慣和自然。但是在城市里,看到這個,會覺得比較暴露。世界上最短的裙子只有五英寸,通常在演出時穿。但是到了苗寨就變成普通衣服了,因為這里的工作人員都穿這種裙子。女生天生愛美,喜歡很多漂亮的衣服,尤其是短裙,夏天會很酷。在山里這個非常特別的地方,所有的女人都穿著同樣的衣服...

          太原到平遙古城?您好,從太原開車到平遙古城大概需要100-110公里,具體看路線和實際路況。謝謝你。平遙古城是一座具有2700多年歷史的文化名城,始建于西周宣王時期(公元前827-782年)。子明洪武三年(公元1370年)重建后,基本保持了原有格局。與第二批國家歷史文化名城四川閬中、云南麗江、安徽歙縣并稱為“保存最完好的四大古城”,也是唯一一個以古城整體成功申報世界文化遺產的古縣城。進入古城不需要...

          關于WPE的詳細解釋?WPE(Winsock packet editor)中文名是:網絡包編輯器在大多數編程工具中,Winsock被封裝為一個控件,成為一個網絡編程控件,非常方便,使用這個控件,編程工具可以編寫插件工具。WPE的工作原理及可行性分析在客戶端/服務器模式下的網絡游戲中,我們的信息都在服務器上。從服務器上修改個人用戶信息的可能性很小??蛻舳税惭b在您的機器上,當您玩游戲時,您發送一條指令...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>