前景:js多应用于前端页面的一些交互,但是现在也用js实现服务器上的开发,甚至强于java或者是c++,吸取了前面技术的优点。
另外,js现在也用于移动端的开发,并且能够很好的兼容IOS和Android两种系统,带来了很大的方便,性价比较高。
一、那么为什么学习算法?
程序=算法+数据结构。好的算法 能够给用户带来一种良好的用户体验。提高产品的性能,带来更高的价值。
二、排序二叉树算法的重要性?
能够更好的查询,更快更有效。例如:在百度查询能够查询出很多的数据,那么是依靠什么让其中的数据排在第一排,或者第
一页?就是根据有效的算法以及其占重要性的比例,算出排在第几。
三、二叉树的原理及代码的实现
从图中可以看出,每个节点可能有父节点,子节点和兄弟节点。其中比较特殊的是根节点(最上面)和叶子节点(最下面)。
特点:左节点<节点<右节点
代码:
<script type=”text/javascript”>
function BinaryTree(){
/*创建节点*/
var Node=function(){
this.key=key;
this.left=null;
this.right=null;
}
/*插入根节点*/
var root=null;
this.insert=function(){
var newNode=new Node(key);
if (root==null) {
root=newNode;
}else{
insertNode(root,newNode);
}
}
/*插入子节点*/
function insertNode(node,newNode){
if (newNode.key<node.key) {
if (node.left===null) {
node.left==newNode;
}else{
insertNode(node.left,newNode);
}
}else{
if (node.right===null) {
node.right==newNode;
}else{
insertNode(node.right,newNode);
}
}
}
}
var nodes=[8,3,10,1,6,14,4,7,13];
var binaryTree=new BinaryTree();
nodes.forEach(function(key){
binaryTree.insert(key);
});
</script>
****************************************************************
四、遍历
在二叉树中有三种遍历节点的方法:中序遍历、前序遍历、后序便利。
中序遍历(升序排列)
原理:1.遍历根节点的左子树
2.遍历根节点
3.遍历根节点的右子树
完整代码:
<!DOCTYPE html>
<html>
<head>
<title>二叉树的练习</title>
</head>
<body>
<script type=”text/javascript”>
function BinaryTree(){
/*创建节点*/
var Node=function(key){
this.key=key;
this.left=null;
this.right=null;
};
var 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 (node.right===null) {
node.right=newNode;
}else{
insertNode(node.right,newNode);
}
}
}
/*插入根节点*/
this.insert=function(key){
var newNode=new Node(key);
if (root===null) {
root=newNode;
}else{
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,7,13];
var binaryTree=new BinaryTree();
nodes.forEach(function(key){
binaryTree.insert(key);
});
/*中序遍历*/
var callback=function(key){
console.log(key);
}
binaryTree.inOrderTraverse(callback);
</script>
</body>
</html>
============================================
前序遍历
原理:
代码:
=============================================
后序遍历:
原理:
代码:
****************************未更完*********************************