国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

做dm素材網(wǎng)站重慶網(wǎng)站快速排名提升

做dm素材網(wǎng)站,重慶網(wǎng)站快速排名提升,做付費網(wǎng)站,響應(yīng)式網(wǎng)站怎樣做文章目錄 1. 基本節(jié)點2. 二叉排序樹2.1 增加節(jié)點2.2 查找(就是遍歷)就一起寫了吧2.3 廣度優(yōu)先遍歷2.4 刪除(這個有點意思)2.5 測試樣例 最后的刪除,目前我測試的是正確的 1. 基本節(jié)點 TreeNode: class TreeNode{pri…

文章目錄

  • 1. 基本節(jié)點
  • 2. 二叉排序樹
    • 2.1 增加節(jié)點
    • 2.2 查找(就是遍歷)就一起寫了吧
    • 2.3 廣度優(yōu)先遍歷
    • 2.4 刪除(這個有點意思)
    • 2.5 測試樣例

最后的刪除,目前我測試的是正確的

1. 基本節(jié)點

TreeNode:

class TreeNode{private int val;TreeNode left;TreeNode right;public void setLeft(TreeNode left){this.left = left;}public void setRight(TreeNode right){this.right = right;}TreeNode(){}TreeNode(int val){this.val = val;}public int getVal(){return this.val;}public String toStringNode(){String ans = "[ val = " + this.val;if(this.left != null){ans += "->left = " + this.left.toStringNode();}if(this.right != null){ans += "->right = " + this.right.toStringNode() + "]";}return ans;}public void setVal(int val){this.val = val;}
}

2. 二叉排序樹

class BinaryTree{public TreeNode root;
}

里面寫一些方法吧!!!

2.1 增加節(jié)點

其實就是插入:

public void insert(int val){TreeNode newNode = new TreeNode(val);if(root == null){root = newNode;return;}TreeNode curNode = root;TreeNode preNode;while(true){preNode = curNode;if(newNode.getVal() > curNode.getVal()){curNode = curNode.right;if(curNode == null){preNode.setRight(newNode);return;}}else{curNode = curNode.left;if(curNode == null){preNode.setLeft(newNode);return;}}}}

2.2 查找(就是遍歷)就一起寫了吧

跟修改一樣

public void inOrder(TreeNode root){if(root == null)return;inOrder(root.left);System.out.print(root.getVal() + " ");inOrder(root.right);}public void preOrder(TreeNode root){if(root == null)return;System.out.print(root.getVal() + " ");preOrder(root.left);preOrder(root.right);}public void HOrder(TreeNode root){if(root == null)return;HOrder(root.left);HOrder(root.right);System.out.print(root.getVal() + " ");}

2.3 廣度優(yōu)先遍歷

利用隊列

// 廣度優(yōu)先搜索void BFS(){if(this.root == null){System.out.println("BFS: null");return;}System.out.print("BFS: ");Queue<TreeNode> queue = new LinkedList<>();queue.add(this.root);while(!queue.isEmpty()){TreeNode cur = queue.poll();System.out.print(cur.getVal() + " ");if(cur.left != null)queue.add(cur.left);if(cur.right != null)queue.add(cur.right);}}

2.4 刪除(這個有點意思)

分了六類情況:

  • 目標(biāo)節(jié)點是葉子節(jié)點(直接刪了)
  • 目標(biāo)節(jié)點只有一個孩子(直接連接上)
  • 目標(biāo)節(jié)點有倆孩子
    • 左孩子沒有右孩子(把目標(biāo)右子樹連在左孩子的右孩子上,然后目標(biāo)父親那條指向左孩子)
    • 右孩子沒有左孩子(把目標(biāo)左子樹連在右孩子的左孩子上,然后目標(biāo)父親那條指向右孩子)
    • 最壞情況了,找目標(biāo)節(jié)點的左孩子最右或者左孩子最左(交換值,刪了那個被交換的孩子)
// 刪除節(jié)點// 獲取最左最右節(jié)點public TreeNode getLR(TreeNode root){if(root == null || (root.left == null && root.right == null))return null;TreeNode ans;if(root.left != null){if(root.left.right == null)return root.left;ans = root.left.right;while(ans.right != null){ans = ans.right;}// System.out.println("獲取最右");return ans;}if(root.right != null){if(root.right.left == null)return root.right;ans = root.right.left;while(ans.left != null){ans = ans.left;}// System.out.println("獲取最左");return ans;}return null;}// 獲取父節(jié)點public TreeNode getParent(TreeNode root, int val){if(root == null || (root.left == null && root.right == null) || root.getVal() == val)return null;// 左孩子不等if(root.getVal() > val){if(root.left != null){if(root.left.getVal() == val)return root;elsereturn getParent(root.left, val);}elsereturn null;}else{if(root.right != null){if(root.right.getVal() == val)return root;elsereturn getParent(root.right, val);}elsereturn null;}}public void delNode(int val){TreeNode parent = new TreeNode(Integer.MAX_VALUE);parent.left = root;delNode(val, parent, null);this.root = parent.left;}public void delNode(int val, TreeNode root, TreeNode parent){if(root == null)return;if(root.getVal() < val){delNode(val, root.right, root);}else if(root.getVal() > val){delNode(val, root.left, root);}else{  // 相等if(root.left != null && root.right == null){    // 沒有左孩子if(parent.left == root){parent.left = root.left;}else{parent.right = root.left;}}else if(root.left == null && root.right != null){  // 沒有右孩子if(parent.left == root){parent.left = root.right;}else{parent.right = root.right;}}else if(root.left == null && root.right == null){  // 都是nullif(parent.left == root){parent.left = null;}else{parent.right = null;} }else{ // 進(jìn)行交換if(root.left.right == null){root.left.right = root.right;if(parent.left == root){parent.left = root.left;}else{parent.right = root.left;}}else if(root.right.left == null){root.right.left = root.left;if(parent.left == root){parent.left = root.left;}else{parent.right = root.left;}}else{TreeNode cur = getLR(root); // 獲取最左最右節(jié)點// 刪除那個節(jié)點TreeNode curParent = getParent(root, cur.getVal()); // 獲取父節(jié)點if(curParent.getVal() > cur.getVal())curParent.left = null;else{curParent.right = null;}root.setVal(cur.getVal());  // 設(shè)置值}}}}

2.5 測試樣例

public class Test2{public static void main(String[] args) {TreeNode node1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node5 = new TreeNode(5);TreeNode node6 = new TreeNode(6);// 進(jìn)行構(gòu)建node1.setRight(node2);node1.setLeft(node3);node3.setLeft(node4);node4.setLeft(node5);node4.setRight(node6);// System.out.println(node1.toStringNode());BinaryTree b = new BinaryTree();b.insert(5);b.insert(7);b.insert(4);b.insert(2);b.insert(0);b.insert(3);b.insert(8);b.insert(6);b.insert(1);// System.out.println(b.root.toStringNode());// System.out.println(b.getParent(b.root, 3).getVal());for(int i = 8; i >= 0; i--){System.out.println("刪除了:" + i);b.delNode(i);b.BFS();System.out.println();}// // 中序// System.out.println("中序:");// // 先序// System.out.println();// System.out.println("先序:");// b.preOrder(b.root);// // 后序// System.out.println();// System.out.println("后序:");// b.HOrder(b.root);// // 深度System.out.println();b.BFS();}
}
http://m.aloenet.com.cn/news/33516.html

相關(guān)文章:

  • 購物網(wǎng)站開發(fā)實例百度關(guān)鍵詞搜索量
  • 網(wǎng)站空間流量不夠深圳短視頻seo教程
  • 自己的網(wǎng)站怎么做關(guān)鍵詞優(yōu)化品牌推廣策劃方案案例
  • pathon能做網(wǎng)站開發(fā)嗎如何去推廣
  • 做網(wǎng)站能成功嗎產(chǎn)品策劃方案怎么做
  • 網(wǎng)站開發(fā)方倍工作室中山seo推廣優(yōu)化
  • 門戶網(wǎng)站 建設(shè)最近的新聞有哪些
  • 廣州做網(wǎng)站的網(wǎng)絡(luò)公司新聞株洲最新
  • 門戶網(wǎng)站建設(shè)情況西地那非片的功能主治
  • 機(jī)械加工怎么找客戶seo快速排名是什么
  • 做電影網(wǎng)站還能賺錢seo在線優(yōu)化技術(shù)
  • 湖南高端網(wǎng)站制百度地圖關(guān)鍵詞優(yōu)化
  • 易企秀怎么做招聘網(wǎng)站超鏈接全國疫情的最新數(shù)據(jù)
  • 常州做網(wǎng)站公司哪家好廣東做seo的公司
  • 西寧微網(wǎng)站建設(shè)拉新充場app推廣平臺
  • 論述政府門戶網(wǎng)站建設(shè)的基本意義百度優(yōu)化大師
  • phpcms手機(jī)網(wǎng)站長沙百度推廣運營公司
  • 做網(wǎng)站為什么要買網(wǎng)站空間百度的seo排名怎么刷
  • 網(wǎng)站設(shè)計策劃書 模板營銷號
  • 做直播網(wǎng)站軟件有哪些軟件下載海外域名
  • 哪種源碼做視頻網(wǎng)站好用知乎軟文推廣
  • 一臺電腦主機(jī)做網(wǎng)站國際新聞最新消息十條
  • 怎么做類似清風(fēng)dj網(wǎng)站自己做一個網(wǎng)站
  • 互聯(lián)網(wǎng)信息服務(wù)許可證做優(yōu)化關(guān)鍵詞
  • 開遠(yuǎn)市住房和城鄉(xiāng)建設(shè)局網(wǎng)站網(wǎng)絡(luò)營銷的特點主要包括什么
  • 小程序官方開發(fā)文檔沈陽企業(yè)網(wǎng)站seo公司
  • wordpress配置cdn緩存規(guī)則博客可以做seo嗎
  • 怎么用python做網(wǎng)站網(wǎng)絡(luò)運營工作內(nèi)容
  • 廣東兩學(xué)一做考試網(wǎng)站今天的病毒感染情況
  • 有趣的網(wǎng)站設(shè)計最新百度關(guān)鍵詞排名