用代码实现二叉树的遍历-Java经典面试题算法部分核心

树的特征:

都有根节点:根节点指的是最上面的一个节点

当孩子节点没有孩子,我们称这样的孩子称为叶子节点

在一棵树中,纵向最长的长度为数的深度

当一棵树每一个节点的孩子不超过2个,我们称这棵树为二叉树

二叉树中,孩子分为左孩子和右孩子

一颗深度为n的二叉树,最多有2^n-1个根节点,最少有n个节点,此时相当于一个链表

二叉树的遍历:

javascript代码实现:

var arr = new Array(1,4,5,7,8,34,12);
//二叉查找树,数的遍历
function Node(value,left,right){
this.value = value;
this.right = right;
this.left = left;
}
//定义方法,把value放到tree当中
function insertTree(tree,value){
if(value>tree.value){  //放到右边
if(tree.right==null){
tree.right=new Node(value,null,null);
}else{
//如果有右孩子
insertTree(tree.right,value)
}
}else{ //放到左节点
if(tree.left==null){
tree.left = new Node(value,null,null);
}else{
insertTree(value,null,null);
}

}
}
//打印二叉树:
function printTree(tree){

if(tree.left != null){
printTree(tree.left);
}
document.write(tree.value+”<br>”); 

if(tree.right != null){
printTree(tree.right);
}
}

//用数组给数的各个节点赋值
var tree = new Node(arr[0],null,null);
for(var i=1;i< arr.length; i++){
insertTree(tree,arr[i]);
}
printTree(tree);

以上是JavaScript代码实现二叉树的遍历

下面是Java代码实现:

package day04;

public class TreeEach {

/**
* @param args
*/

public static void main(String[] args) {
int[] arr = {1,3,4,6,7,43,23};

Node1 tree = new Node1(arr[0]);
for(int i=1;i<arr.length;i++){
insertTree(tree, arr[i]);
}
printTree(tree);

}
public static void insertTree(Node1 tree,int num){
if(num>tree.value){  //放到右边
if(tree.right==null){
tree.right=new Node1(num);
}else{
insertTree(tree.right, num);
}
}else{
if(tree.left==null){
tree.left=new Node1(num);
}else{
insertTree(tree.left, num);
}
}

}
public static void printTree(Node1 tree){

if(tree.left !=null){
printTree(tree.left);
}
System.out.println(tree.value);
if(tree.right != null){
printTree(tree.right);
}
}

}

class Node1{
int value;
Node1 left;
Node1 right;
Node1 tree;
public Node1(int value){
this.value = value;
}
}

    原文作者:风城玫瑰Rose
    原文地址: https://blog.csdn.net/SoWhatWorld/article/details/77429777
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞