第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
  • 排序二叉樹
    查看全部
  • 斷點(diǎn)調(diào)試,單步調(diào)試
    查看全部
    0 采集 收起 來(lái)源:排序二叉樹的重要性

    2018-10-03

  • 排序二叉樹:左孩子 <父節(jié)點(diǎn)< 右孩子? 兄弟節(jié)點(diǎn)? ?根節(jié)點(diǎn)


    查看全部
  • 源代碼:

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>Document</title>

    </head>

    <body>


    </body>

    <script type="text/javascript">

    function BinaryTree () {

    var Node = function (key) {

    this.key = key;

    this.left = null;

    this.right = null;

    }


    this.root = null;


    var insertNode = function (node,newNode) {

    if(newNode.key < node.key){

    if(node.left === null){

    node.left = newNode;

    }else{

    insertNode(node.left,newNode);

    }

    }else if(newNode.key > node.key){

    if(node.right === null){

    node.right = newNode;

    }else{

    insertNode(node.right,newNode);

    }

    }

    }



    this.insert = function (key) {

    if(this.root === null){

    this.root = new Node(key);

    }else{

    insertNode(this.root,new Node(key));

    }

    }

    //棧是先進(jìn)后出的,所以在節(jié)點(diǎn)1的時(shí)候,它沒(méi)有左子節(jié)點(diǎn),這個(gè)時(shí)候開始出棧,繼續(xù)執(zhí)行上一次的inOrderTraverceNodes里未執(zhí)行完的代碼,當(dāng)節(jié)點(diǎn)1也沒(méi)有右子節(jié)點(diǎn)的時(shí)候,到節(jié)點(diǎn)3開始繼續(xù)執(zhí)行上一次的inOrderTraverceNodes里未執(zhí)行完的代碼,以此類推。


    //棧是先進(jìn)后出的,一開始節(jié)點(diǎn)8執(zhí)行函數(shù),有左子節(jié)點(diǎn)3,節(jié)點(diǎn)3執(zhí)行函數(shù),有左子節(jié)點(diǎn)1,節(jié)點(diǎn)1執(zhí)行函數(shù),沒(méi)有左子節(jié)點(diǎn),這時(shí)是null,這時(shí)這個(gè)函數(shù)已經(jīng)出棧,到節(jié)點(diǎn)1之前執(zhí)行的函數(shù)開始出棧了,然后調(diào)用callback,打印了1,然后節(jié)點(diǎn)1傳入node.right,這時(shí)又是null,然后這個(gè)函數(shù)出棧了,開始到節(jié)點(diǎn)3之前執(zhí)行的函數(shù)出棧了,所以進(jìn)棧的順序是8,3,1,1的左null,出棧的順序是1的左null,1,1的右null,3,3執(zhí)行后,右邊有個(gè)6,6進(jìn)棧,6有4,4進(jìn)棧,這個(gè)時(shí)候棧里還有8,3,,6,4

    //中序遍歷代碼,先找左子節(jié)點(diǎn),再找右子節(jié)點(diǎn)

    var inOrderTraverceNodes = function (node,callback) {

    if(node !== null){

    inOrderTraverceNodes(node.left,callback);

    callback(node.key);//調(diào)動(dòng)callback

    inOrderTraverceNodes(node.right,callback);

    }

    }


    this.inOrderTraverce = function (callback) {

    inOrderTraverceNodes(this.root,callback);

    }

    //前序遍歷代碼,先找自己,再找左子節(jié)點(diǎn),再找右子節(jié)點(diǎn)

    var preOrderTraverceNodes = function (node,callback) {

    if(node !== null){

    callback(node.key);//調(diào)動(dòng)callback

    preOrderTraverceNodes(node.left,callback);

    preOrderTraverceNodes(node.right,callback);

    }

    }


    this.preOrderTraverce = function (callback) {

    preOrderTraverceNodes(this.root,callback);

    }


    //后序遍歷代碼,先找左子節(jié)點(diǎn),再找右子節(jié)點(diǎn),需要找完自己的左右子節(jié)點(diǎn)

    var postOrderTraverceNodes = function (node,callback) {

    if(node !== null){

    postOrderTraverceNodes(node.left,callback);

    postOrderTraverceNodes(node.right,callback);

    callback(node.key);//調(diào)動(dòng)callback

    }

    }


    this.postOrderTraverce = function (callback) {

    preOrderTraverceNodes(this.root,callback);

    }


    //查找最小值,只需要查找左子節(jié)點(diǎn)

    var minNode = function (node) {

    if(node){

    while (node && node.left !== null) {

    node = node.left;

    }

    return node.key;

    }

    return null;

    }


    this.min = function () {

    return minNode(this.root);

    }


    //查找最大值,只需要查找右子節(jié)點(diǎn)

    var maxNode = function (node) {

    if(node){

    while (node && node.right !== null) {

    node = node.right;

    }

    return node.key;

    }

    return null;

    }


    this.max = function () {

    return minNode(this.root);

    }


    //查找值x

    var searchNode = function (node,key) {

    if(node === null){

    return false;

    }


    if(key < node.key){

    return searchNode(node.left,key);

    }else if(key > node.key){

    return searchNode(node.right,key);

    }else{

    return true;

    }

    }


    this.search = function (key) {

    return searchNode(this.root,key);

    }



    //查找最小值,只需要查找左子節(jié)點(diǎn)

    var findMinNode = function (node) {

    if(node){

    while (node && node.left !== null) {

    node = node.left;

    }

    return node;

    }

    return null;

    }


    //刪除葉子節(jié)點(diǎn)

    var removeNode = function (node,key) {

    if(node === null){

    return null;

    }


    if(key < node.key){

    node.left = removeNode(node.left,key);

    return node;

    }else if(key > node.key){

    node.right = removeNode(node.right,key);

    return node;

    }else{

    if(node.left === null && node.right === null){

    node = null;

    return node;

    }


    if(node.left === null){

    //把右子節(jié)點(diǎn)覆蓋當(dāng)前節(jié)點(diǎn)

    node = node.right;

    return node;

    }else if(node.right === null){

    //把右子節(jié)點(diǎn)覆蓋當(dāng)前節(jié)點(diǎn)

    node = node.left;

    return node;

    }else{

    //例如刪除的是節(jié)點(diǎn)3,走到這里當(dāng)前節(jié)點(diǎn)就是節(jié)點(diǎn)3了,傳入節(jié)點(diǎn)6,找到它的最小節(jié)點(diǎn),返回當(dāng)前節(jié)點(diǎn),修改節(jié)點(diǎn)3的key為節(jié)點(diǎn)4,傳入節(jié)點(diǎn)6和要?jiǎng)h除的節(jié)點(diǎn)4,刪除后重新對(duì)節(jié)點(diǎn)6賦值,在返回其父節(jié)點(diǎn)4

    var aux = findMinNode(node.right);

    node.key = aux.key;

    node.right = removeNode(node.right,aux.key);

    return node;

    }

    }

    }


    this.remove = function (key) {

    removeNode(this.root,key);

    }

    }


    var nodes = [8,3,10,1,6,14,4,7,13];

    var binaryTree = new BinaryTree;

    nodes.forEach((key) =>{

    binaryTree.insert(key);

    })

    console.dir(binaryTree.root);

    var callback = function (key) {

    console.log(key);

    }

    // binaryTree.preOrderTraverce(callback);


    // console.log('this is min: ' + binaryTree.min());


    console.log('this is search: ' + binaryTree.search(7));

    console.log('this is search: ' + binaryTree.search(9));


    binaryTree.remove(1);

    </script>

    </html>


    查看全部
  • ? var inOrderTraverseNode = function (node,callback){

    ? ? ? ? ? if(node!==null){

    ? ? ? ? ? ? inOrderTraverseNode(node.left,callback);

    ? ? ? ? ? ? callback(node.key);

    ? ? ? ? ? ? inOrderTraverseNode(node.right,callback);

    ? ? ? ? ? }

    ? ? ? ? }


    ? ? ? ? this.inOrderTraverse = function(callback){

    ? ? ? ? ? inOrderTraverseNode(root,callback);

    ? ? ? ? }

    ? ? };


    ? ? var nodes=[8,3,1,6,14,4,7,13];

    ? ? var binaryTree=new BinaryTree();

    ? ? nodes.forEach(function(key){

    ? ? ? ? binaryTree.insert(key);

    ? ? });


    ? ? var callback=function(key){

    ? ? ? console.log(key);

    ? ? }


    ? ? binaryTree.inOrderTraverse(callback);


    查看全部
  • function(callback){

    }

    當(dāng)我們要輸出某一個(gè)節(jié)點(diǎn)的值得時(shí)候,我們就把這個(gè)節(jié)點(diǎn)的值傳入這個(gè)回調(diào)函數(shù)中,讓這個(gè)回調(diào)函數(shù)決定怎么輸出出來(lái)

    查看全部
  • ==用于一般比較,===用于嚴(yán)格比較,==在比較的時(shí)候可以轉(zhuǎn)換數(shù)據(jù)類型,===嚴(yán)格比較,只要類型不匹配就返回flase

    查看全部
  • “==”是"==="

    var nodes=[8,3,1];

    查看全部
  • Node.js

    開發(fā)的APP可以在IOS和Android平臺(tái)上同時(shí)運(yùn)行

    console.log("Hello World");

    在開發(fā)者工具中顯示

    單步調(diào)試

    查看全部
  • 編程入門
    查看全部
    0 采集 收起 來(lái)源:排序二叉樹的重要性

    2018-07-12

  • 后序遍歷---先遍歷左節(jié)點(diǎn),然后遍歷右節(jié)點(diǎn),最后打印當(dāng)前父節(jié)點(diǎn)

    查看全部
  • 前序遍歷---相當(dāng)于復(fù)制當(dāng)前的二叉樹

    查看全部
  • 中序遍歷---先找左節(jié)點(diǎn),然后父節(jié)點(diǎn),最后右節(jié)點(diǎn)

    查看全部
  • public?static?final?String?node=?"xxxxx";
    //二叉樹前序遍歷復(fù)制數(shù)據(jù)最快


    查看全部
  • document.querySelector
    查看全部

舉報(bào)

0/150
提交
取消
課程須知
1、對(duì)html基礎(chǔ)知識(shí)已經(jīng)掌握。 2、對(duì)js的基本語(yǔ)法,例如數(shù)組,對(duì)象有一定的掌握。
老師告訴你能學(xué)到什么?
1、二叉樹的定義,創(chuàng)建以及js編碼實(shí)現(xiàn) 2、二叉樹中序遍歷的算法原理及js編碼實(shí)現(xiàn) 3、二叉樹前序遍歷的算法原理及js編碼實(shí)現(xiàn) 4、二叉樹后續(xù)遍歷的算法原理及js編碼實(shí)現(xiàn) 5、二叉樹節(jié)點(diǎn)查找的算法原理和編碼實(shí)現(xiàn)

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買該課程,無(wú)需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!