Java教程

二叉树的最大(小)深度、前(中、后)序遍历【JavaScript】

本文主要是介绍二叉树的最大(小)深度、前(中、后)序遍历【JavaScript】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

       由于二叉树独特的树形结构,所以二叉树的很多操作都涉及到递归的方法,从一个根节点映射到很多子节点。

二叉树最大深度

       求二叉树的最大深度就是,遍历二叉树的左子树和右子树,找到根节点到某一叶子节点的最远距离。

 var maxDepth=function(root){
    if(root==null){
        return 0;
    }
    return Math.max(maxDepth(root.left)),(maxDepth(root.right))+1;
}

二叉树最小深度

var minDepth=function(root){
    if(!root){
        return 0;
    }
    if(!root.left){
        return 1+minDepth(root.right);
    }
    if(!root.right){
        return 1+minDepth(root.left);
    }
    return Math.min(minDepth(root.left),minDepth(root.right))+1;
}

二叉树的中序遍历

左—根---右的顺序遍历:

var inOrder=function(root){
    var arr=[];
    function order(node){//定义遍历函数
      if(node!=null){//根节点不为空
          if(node.left!=null){//左节点不为空时
              order(node.left);//将左节点作为新的根节点再调用遍历函数
          }
          arr.push(node.val);//将当前根节点值放入数组
          if(node.right!=null){//同上
              order(node.right);
          }
      }
    }
    order(root);//调用遍历函数
    return arr;//返回遍历的数组
};

二叉树后序遍历

左—右---根

var postorderTraversal = function(root) {

    var arr=[];
    function order(node){
      if(node!=null){
          if(node.left!=null){
              order(node.left);
          }
         
          if(node.right!=null){
              order(node.right);
          }
         arr.push(node.val);
      }
    }
    order(root);
    return arr;


};

二叉树的前序遍历

根—左---右

var preorderTraversal = function(root) {
var arr=[];
function order(node){
    if(node!=null){
        arr.push(node.val);
        if(node.left!=null){
            order(node.left);
        }
        if(node.right!=null){
            order(node.right);
        }
    }
}
order(root);
return arr;
};
这篇关于二叉树的最大(小)深度、前(中、后)序遍历【JavaScript】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!