用代码实现二叉树的遍历-Java经典面试题算法部分核心
2017-08-20 16:04
836 查看
树的特征:
都有根节点:根节点指的是最上面的一个节点
当孩子节点没有孩子,我们称这样的孩子称为叶子节点
在一棵树中,纵向最长的长度为数的深度
当一棵树每一个节点的孩子不超过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;
}
}
都有根节点:根节点指的是最上面的一个节点
当孩子节点没有孩子,我们称这样的孩子称为叶子节点
在一棵树中,纵向最长的长度为数的深度
当一棵树每一个节点的孩子不超过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;
}
}
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- 用java代码实现二叉树的遍历算法
- 算法:二叉树的先(根)序遍历、中(根)序遍历、后(根)序遍历(递归及压栈出栈实现的非递归方式)的java代码实现
- 【LeetCode-面试算法经典-Java实现】【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】
- 算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现
- 计算器核心算法代码实现(Java)
- 【算法】B+树的研读及实现(2)---java版核心代码
- 【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
- 经典内部排序算法学习总结(算法思想、可视化、Java代码实现、改进、复杂度分析、稳定性分析)
- 笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)
- 【LeetCode-面试算法经典-Java实现】【226-Invert Binary Tree(反转二叉树)】
- 【算法】红黑树的核心代码实现(java版)
- 二叉树的遍历思想及核心代码实现
- 算法经典面试题整理(java实现)
- java代码实现二叉树的遍历
- 【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】
- java实现二叉树的三种遍历算法(递归)
- 【LeetCode-面试算法经典-Java实现】【199-Binary Tree Right Side View(从右边看二叉树)】