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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
  • 1.前序遍歷可用于復(fù)制一顆二叉樹 2.中序便歷可用于排序 3.后序遍歷可以用在文件系統(tǒng)里
    查看全部
  • 計(jì)算機(jī)程序設(shè)計(jì)的本質(zhì)是 將業(yè)務(wù)邏輯轉(zhuǎn)化為數(shù)據(jù)邏輯
    查看全部
  • 這里漏了吧,不過沒關(guān)系,也就截圖上的內(nèi)容

    查看全部
  • <!DOCTYPE html>

    <html lang="en">


    <head>

    <meta charset="UTF-8">

    <title>JavaScript二叉樹中序算法</title>

    </head>


    <body>

    <script>

    function BinaryTree() {

    //初始化root根為空值

    var root = null;


    //將傳入值添加this.key,this.left,this.right屬性

    var Node = function (key) {

    this.key = key;

    this.left = null;

    this.right = null;

    };


    //將傳入值進(jìn)行判斷,作為父節(jié)點(diǎn)的左支或右支

    var insertNode = function (node, newNode) {

    if (newNode.key < node.key) {

    //如果傳入值小于父節(jié)點(diǎn),作為左支,不過要先進(jìn)行判斷左支是否已經(jīng)存在

    if (node.left === null) {

    //如果左支是null空值,將傳入值作為左支

    node.left = newNode;

    } else {

    //否則(左支已經(jīng)存在)繼續(xù)執(zhí)行函數(shù)進(jìn)行下個(gè)節(jié)點(diǎn)的判斷

    insertNode(node.left, newNode);

    }

    } else {

    //否則(傳入值大于父節(jié)點(diǎn))作為右支,不過要先進(jìn)行判斷右支是否已經(jīng)存在

    if (node.right === null) {

    //如果右支是null空值,將傳入值作為右支

    node.right = newNode;

    } else {

    //否則(右支已經(jīng)存在)繼續(xù)執(zhí)行函數(shù)進(jìn)行下個(gè)節(jié)點(diǎn)的判斷

    insertNode(node.right, newNode);

    }

    }

    };


    //函數(shù)的入口,第一步執(zhí)行的函數(shù),確定root根的值

    this.insert = function (key) {

    var newNode = new Node(key);

    //newNode擁有newNode.key=key,newNode.left=null,newNode.right=null

    if (root === null) {

    root = newNode;

    //如果沒有root根,將傳入值作為root根

    } else {

    insertNode(root, newNode)

    //如果已經(jīng)存在根,執(zhí)行insertNode函數(shù)

    }

    };


    //將root根值和傳入值(callback)賦給inOrderTraverseNod(),執(zhí)行inOrderTraverseNod()

    this.inOrderTraverse = function (callback) {

    inOrderTraverseNode(root, callback);

    };

    };


    //傳入子節(jié)點(diǎn)(callback)和父節(jié)點(diǎn)(node)(第一次的父節(jié)點(diǎn)就是root)

    var inOrderTraverseNode = function (node, callback) {

    //如果父節(jié)點(diǎn)存在,繼續(xù)將左支和右支執(zhí)行inOrderTraverseNod(),直到不存在子分支為止

    // !!注意if結(jié)構(gòu)里面的函數(shù)執(zhí)行順序,先執(zhí)行inOrderTraverseNode(node.left,callback);再執(zhí)行callback(node.key);最后執(zhí)行inOrderTraverseNode(node.right,callback);

    //當(dāng)inOrderTraverseNode(node.left,callback);執(zhí)行完之后,才會(huì)再執(zhí)行callback(node.key);(即先打印完左分支的值,再打印最頂層的父節(jié)點(diǎn),這樣就達(dá)到了從小到大的排序效果).右分支同理

    if (node !== null) {

    inOrderTraverseNode(node.left, callback);

    callback(node.key);

    inOrderTraverseNode(node.right, callback);

    }

    };


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


    //實(shí)例化BinaryTree

    var binaryTree = new BinaryTree();


    //遍歷nodes數(shù)組,將每個(gè)數(shù)組的值(key)傳入binary.insert(),執(zhí)行insert()函數(shù)

    nodes.forEach(function (key) {

    binaryTree.insert(key);

    });


    //定義callback函數(shù),將傳入callback的值打印出來

    var callback = function (key) {

    console.log(key);

    };


    //注意此callback是參數(shù),不是function函數(shù),執(zhí)行的是inOrderTraverse(),不是上面的callback()

    binaryTree.inOrderTraverse(callback);

    </script>

    </body>


    </html>


    查看全部
  • <!DOCTYPE html>

    <html lang="en">


    <head>

    <meta charset="UTF-8">

    <title>JavaScript二叉樹中序算法</title>

    </head>


    <body>

    <script>

    function BinaryTree() {

    //初始化root根為空值

    var root = null;

    //將傳入值添加this.key,this.left,this.right屬性

    var Node = function (key) {

    this.key = key;

    this.left = null;

    this.right = null;

    };


    //將傳入值進(jìn)行判斷,作為父節(jié)點(diǎn)的左支或右支

    var insertNode = function (node, newNode) {

    if (newNode.key < node.key) {

    //如果傳入值小于父節(jié)點(diǎn),作為左支,不過要先進(jìn)行判斷左支是否已經(jīng)存在

    if (node.left === null) {

    //如果左支是null空值,將傳入值作為左支

    node.left = newNode;

    } else {

    //否則(左支已經(jīng)存在)繼續(xù)執(zhí)行函數(shù)進(jìn)行下個(gè)節(jié)點(diǎn)的判斷

    insertNode(node.left, newNode);

    }

    } else {

    //否則(傳入值大于父節(jié)點(diǎn))作為右支,不過要先進(jìn)行判斷右支是否已經(jīng)存在

    if (node.right === null) {

    //如果右支是null空值,將傳入值作為右支

    node.right = newNode;

    } else {

    //否則(右支已經(jīng)存在)繼續(xù)執(zhí)行函數(shù)進(jìn)行下個(gè)節(jié)點(diǎn)的判斷

    insertNode(node.right, newNode);

    }

    }

    };


    //函數(shù)的入口,第一步執(zhí)行的函數(shù),確定root根的值

    this.insert = function (key) {

    var newNode = new Node(key);

    //newNode擁有newNode.key=key,newNode.left=null,newNode.right=null

    if (root === null) {

    root = newNode;

    //如果沒有root根,將傳入值作為root根

    } else {

    insertNode(root, newNode)

    //如果已經(jīng)存在根,執(zhí)行insertNode函數(shù)

    }

    };

    //將root根值和傳入值(callback)賦給inOrderTraverseNod(),執(zhí)行inOrderTraverseNod()

    this.inOrderTraverse=function(callback){

    inOrderTraverseNode(root,callback);

    };

    };


    //傳入子節(jié)點(diǎn)(callback)和父節(jié)點(diǎn)(node)(第一次的父節(jié)點(diǎn)就是root)

    var inOrderTraverseNode=function(node,callback){

    //如果父節(jié)點(diǎn)存在,繼續(xù)將左支和右支執(zhí)行inOrderTraverseNod(),直到不存在子分支為止

    // !!注意if結(jié)構(gòu)里面的函數(shù)執(zhí)行順序,先執(zhí)行inOrderTraverseNode(node.left,callback);再執(zhí)行callback(node.key);最后執(zhí)行inOrderTraverseNode(node.right,callback);

    //當(dāng)inOrderTraverseNode(node.left,callback);執(zhí)行完之后,才會(huì)再執(zhí)行callback(node.key);(即先打印完左分支的值,再打印最頂層的父節(jié)點(diǎn),這樣就達(dá)到了從小到大的排序效果).右分支同理

    if(node!==null){

    inOrderTraverseNode(node.left,callback);

    callback(node.key);

    inOrderTraverseNode(node.right,callback);

    }

    };


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


    //實(shí)例化BinaryTree

    var binaryTree = new BinaryTree();


    //遍歷nodes數(shù)組,將每個(gè)數(shù)組的值(key)傳入binary.insert(),執(zhí)行insert()函數(shù)

    nodes.forEach(function (key) {

    binaryTree.insert(key);

    });


    //定義callback函數(shù),將傳入callback的值打印出來

    var callback=function(key){

    console.log(key);

    };


    //注意此callback是參數(shù),不是function函數(shù),執(zhí)行的是inOrderTraverse(),不是上面的callback()

    binaryTree.inOrderTraverse(callback);

    </script>

    </body>


    </html>


    查看全部
  • <!-- 稍微改造了一下下,可視化二叉樹排序,非常有利于學(xué)習(xí)和理解喲!-->

    <!DOCTYPE html> ? ?

    <html> ? ?

    <title>二叉排序樹</title> ? ?

    ? ? <head> ? ?

    ? ? ? ? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ? ?

    ? ? </head> ? ?

    ? ? <body > ? ?

    ? ? ? ? <canvas id="canvas" width="1366" height="768" ></canvas>

    ? ? </body> ? ?

    </html> ? ?

    ? ??

    <script type="text/javascript">

    ? ? ? ?

    ? ? ? ? //二叉算法函數(shù) ? ?

    ? ? ? ?function BinaryTree(){

    ? ? ? ? //node 節(jié)點(diǎn)函數(shù)

    ? ? ? ? var Node=function(key){

    ? ? ? ? ? ? this.key=key;

    ? ? ? ? ? ? this.left=null;

    ? ? ? ? ? ? this.right=null;

    ? ? ? ? ? ? this.x = 0;//圖形繪制坐標(biāo)

    ? ? ? ? ? ? this.y = 0;//圖形繪制坐標(biāo)

    ? ? ? ? };


    ? ? ? ? /**二叉樹可視圖形描述**/

    ? ? ? ? this.graphical = [];//圖形數(shù)組

    ? ? ? ? this.lrMove = 100;//左右偏移量

    ? ? ? ? this.udMove = 100;//上下偏移量

    ? ? ? ? /**==================**/


    ? ? ? ? //定義根節(jié)點(diǎn)

    ? ? ? ? var root=null;


    ? ? ? ? //插入節(jié)點(diǎn) 循環(huán)遞歸函數(shù) 左右分插

    ? ? ? ? this.insertNode=function(node,newNode){

    ? ? ? ? ? ? if(newNode.key < node.key){

    ? ? ? ? ? ? ? ? if(node.left===null){

    ? ? ? ? ? ? ? ? ? ? var x = node.x;

    ? ? ? ? ? ? ? ? ? ? var y = node.y;

    ? ? ? ? ? ? ? ? ? ? newNode.x = (x -= this.udMove);?

    ? ? ? ? ? ? ? ? ? ? newNode.y = (y += this.lrMove);

    ? ? ? ? ? ? ? ? ? ? node.left=newNode; ? ??

    ? ? ? ? ? ? ? ? }else{

    ? ? ? ? ? ? ? ? ? ? this.insertNode(node.left,newNode);

    ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? }else{

    ? ? ? ? ? ? ? ? if(node.right===null){

    ? ? ? ? ? ? ? ? ? ? var x = node.x;

    ? ? ? ? ? ? ? ? ? ? var y = node.y;

    ? ? ? ? ? ? ? ? ? ? newNode.x = (x += this.udMove);?

    ? ? ? ? ? ? ? ? ? ? newNode.y = (y += this.lrMove);

    ? ? ? ? ? ? ? ? ? ? node.right=newNode;

    ? ? ? ? ? ? ? ? }else{

    ? ? ? ? ? ? ? ? ? ? this.insertNode(node.right,newNode);

    ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? }

    ? ? ? ? };


    ? ? ? ? //入口程序

    ? ? ? ? this.insert=function(key){

    ? ? ? ? ? ? var newNode= new Node(key);

    ? ? ? ? ? ? if(root===null){

    ? ? ? ? ? ? ? ? root=newNode;

    ? ? ? ? ? ? ? ? root.x = 500;

    ? ? ? ? ? ? ? ? root.y = 100;

    ? ? ? ? ? ? ? ? this.graphical.push(root);

    ? ? ? ? ? ? }else{

    ? ? ? ? ? ? ? ? this.insertNode(root,newNode);

    ? ? ? ? ? ? }

    ? ? ? ? };


    ? ? ? ? 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,10,1,6,14,4,15,12,13];

    ? ? var binaryTree=new BinaryTree;

    ? ? for(var i = 0 ; i < nodes.length ; i++){

    ? ? ? ? ?binaryTree.insert(nodes[i]);

    ? ? }


    ? ? var callback = function(key){

    ? ? ? ? console.log(key)

    ? ? }


    ? ? binaryTree.inOrdertraverse(callback);


    ? ? /*=====================================================開始繪制================================*/

    ? ? var canvas = document.getElementById("canvas");

    ? ? var context = canvas.getContext('2d'); ?//獲取對(duì)應(yīng)的2D對(duì)象(畫筆)



    ? ? function draw(key,x,y){

    ? ? ? ? this.counter = 0;

    ? ? ? ? this.render = function(c){

    ? ? ? ? ? ? c.fillStyle = "hsl("+ this.counter +", 100%, 50%)";

    ? ? ? ? ? ? c.strokeStyle = '#fff'; //設(shè)置筆觸的顏色

    ? ? ? ? ? ? c.font = "bold 40px '字體','字體','微軟雅黑','宋體'"; //設(shè)置字體

    ? ? ? ? ? ? c.textBaseline = 'hanging'; //在繪制文本時(shí)使用的當(dāng)前文本基線

    ? ? ? ? ? ? c.fillText(key ,x ,y);?

    ? ? ? ? }

    ? ? ? ? this.update = function(){

    ? ? ? ? ? this.counter += 5;

    ? ? ? ? }

    ? ? }


    ? ? var fontCavaseArr = [];


    ? ? ?function init() {?

    ? ? ? ? loop();//繪制文字 ? ? ? ?

    ? ? ? ? setInterval(run, 1000/30);

    ? ? ? }



    ? ? function run(x,y){

    ? ? ? context.fillStyle = "rgba(0,0,0,0.1)";

    ? ? ? context.fillRect(0,0,1366,768); //繪制 1366*768 像素的已填充矩形:

    ? ? ? for (i=0; i<fontCavaseArr.length; i++) {

    ? ? ? ? var particle = fontCavaseArr[i];?

    ? ? ? ? particle.render(context);?

    ? ? ? ? particle.update();?

    ? ? ? }

    ? ? ? gLine();//繪制線條

    ? ? }


    ? ? function loop(){

    ? ? ? ? font(binaryTree.graphical[0]);

    ? ? }


    ? ? function font(obj){

    ? ? ? ? if(obj.key != null && obj.key != undefined){

    ? ? ? ? ? ? var drawFont = new draw(obj.key,obj.x,obj.y);

    ? ? ? ? ? ? fontCavaseArr.push(drawFont);

    ? ? ? ? }

    ? ? ? ? if(obj.left != null && obj.left != undefined){

    ? ? ? ? ? ? var drawFont = new draw(obj.left.key,obj.left.x,obj.left.y);

    ? ? ? ? ? ? fontCavaseArr.push(drawFont);

    ? ? ? ? ? ? font(obj.left);

    ? ? ? ? }

    ? ? ? ? if(obj.right != null && obj.right != undefined){

    ? ? ? ? ? ? var drawFont = new draw(obj.right.key,obj.right.x,obj.right.y);

    ? ? ? ? ? ? fontCavaseArr.push(drawFont);

    ? ? ? ? ? ? font(obj.right);

    ? ? ? ? }

    ? ? }


    ? ? function gLine(){

    ? ? ? ? line(binaryTree.graphical[0]);

    ? ? }

    ? ??

    ? ? function line(obj){

    ? ? ? ? context.lineJoin="round"; ?

    ? ? ? ? context.lineCap="butt"; ?

    ? ? ? ? context.beginPath();?

    ? ? ? ? if(obj.left != null && obj.left != undefined){

    ? ? ? ? ? ? context.moveTo(obj.x+20,obj.y+20);?

    ? ? ? ? ? ? context.lineTo(obj.left.x+20,obj.left.y+20);

    ? ? ? ? ? ? context.stroke(); ?

    ? ? ? ? ? ? context.closePath();?

    ? ? ? ? ? ? line(obj.left);

    ? ? ? ? }

    ? ? ? ? if(obj.right != null && obj.right != undefined){

    ? ? ? ? ? ? context.moveTo(obj.x+20,obj.y+20);?

    ? ? ? ? ? ? context.lineTo(obj.right.x+20,obj.right.y+20);

    ? ? ? ? ? ? context.stroke(); ?

    ? ? ? ? ? ? context.closePath();?

    ? ? ? ? ? ? line(obj.right);

    ? ? ? ? }

    ? ? }

    ? ??

    ? ? init();


    </script> ? ?


    查看全部
    1. 根節(jié)點(diǎn)

    2. 中間節(jié)點(diǎn)

    3. 葉子結(jié)點(diǎn)

    4. 節(jié)點(diǎn)層次:二叉樹的高

    5. 排序二叉樹:左子節(jié)點(diǎn)值小于父節(jié)點(diǎn),右子節(jié)點(diǎn)值大于父節(jié)點(diǎn)

    查看全部
  • <!Doctype? html>????????//文檔聲明,便于解析

    breakpoints: 單步調(diào)式

    查看全部
  • * 任意節(jié)點(diǎn)的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;
    * 任意節(jié)點(diǎn)的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;
    * 任意節(jié)點(diǎn)的左、右子樹也分別為二叉查找樹;
    * 沒有鍵值相等的節(jié)點(diǎn)。

    第一個(gè)節(jié)點(diǎn)為根節(jié)點(diǎn),最后的沒有子節(jié)點(diǎn)的稱為葉子節(jié)點(diǎn),中間部分稱為中間節(jié)點(diǎn)。

    查看全部
  • 單點(diǎn)調(diào)試功能,打斷點(diǎn)
    查看全部
  • 這個(gè)太神奇了,原來可以通過將一個(gè)算法的數(shù)學(xué)模型,用代碼表示出來,最于明白,算法,數(shù)據(jù)結(jié)構(gòu),編程之間的關(guān)系了
    查看全部
  • javascript借助react native 或lonic開發(fā)出來的程序,可以輕松跨越ios 與android
    查看全部
  • 前序遍歷復(fù)制二叉樹
    查看全部
  • 中序遍歷-升序
    查看全部
  • 中序遍歷、前序遍歷、后序遍歷
    查看全部

舉報(bào)

0/150
提交
取消
課程須知
1、對(duì)html基礎(chǔ)知識(shí)已經(jīng)掌握。 2、對(duì)js的基本語法,例如數(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)買該課程,無需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!