您的位置:首页 > 其它

递归--二叉树遍历,求深度,求二叉树节点个数

2017-08-30 16:51 561 查看
本文为递归实现二叉树的各种操作。

二叉树的前序遍历:(根--左--右)

public static void PreOrder(TreeNode tree){
if(tree != null){
System.out.print(tree.val);
PreOrder(tree.left);
PreOrder(tree.right);
}
}
二叉树的中序遍历:(左--根--右)

public static void InOrder(TreeNode tree){
if(tree != null){
InOrder(tree.left);
System.out.print(tree.val);
InOrder(tree.right);
}
}


二叉树的后序遍历:(左--右--根)

public static void PostOrder(TreeNode tree){
if(tree != null){
PostOrder(tree.left);
PostOrder(tree.right);
System.out.print(tree.val);
}
}

二叉树层次遍历:(从上到下,从左到右)

思想:利用队列实现,在访问二叉树某一层节点时,把下一层的节点指针预先记忆在队列中,利用队列安排逐层访问的顺序。

public static void LevelOrder(TreeNode tree){
TreeNode p = null;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(tree);
while(!queue.isEmpty()){
p = queue.poll();
System.out.print(p.val);
if(p.left != null)
queue.add(p.left);
if(p.right != null)
queue.add(p.right);
}
}
求二叉树的高度:

思想:分别找出左右子树的高度,找出最大的+1。递归实现

public static int heigh(TreeNode tree){
if(tree == null)
return 0;
else
return 1 + Math.max(heigh(tree.left),heigh(tree.right));
}
求二叉树节点个数:

思想:分别计算左右子树的节点个数,相加后在+1.递归实现

public static int size(TreeNode tree){
if(tree == null)
return 0;
else
return 1 + size(tree.left) + size(tree.right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐