栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二叉树先序中序后序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树先序中序后序

大家首先要明白想要得到先序中序后序遍历分为递归和非递归方法

二叉树

递归非递归

递归

递归方式比较好理解,直接上代码!

//先序遍历
public void f(Node head){
	if(head == null){
		return; 
	}
	System.out.println(head.val);
	f(head.left);
	f(head.right);
}
//中序遍历
public void f(Node head){
	if(head == null){
		return; 
	}
	f(head.left);
	System.out.println(head.val);
	f(head.right);
}
//后序遍历
public void f(Node head){
	if(head == null){
		return; 
	}
	f(head.left);
	f(head.right);
	System.out.println(head.val);
}
非递归
//先序遍历
public void f(Node head){
	Stack stack = new Stack();
	stack.push(head);
	while(!stack.isEmpty()){
		Node help = stack.pop();
		System.out.print(help.val + " ");
		if(help.right != null){
			stack.push(help.right); 
		}
		if(help.left != null){
			stack.push(help.left); 
		}
	}
	System.out.println();
}
//中序遍历
public void f(Node head){
	Stack stack1 = new Stack();
	Stack stack2 = new Stack();
	stack1.push(head);
	while(!stack1.isEmpty()){
		Node help = stack1.pop();
		Stack2.push(help);
		if(head.left != null){
			stack1.push(head.left); 
		} 
		if(head.right != null){
			stack1.push(head.rigth); 
		} 
	}
	while(!stack2.isEmpty()){
		System.out.print(stack2.pop().val + " "); 
	}
	System.out.println();
}

//后续遍历
public void f(Node head){
	if(head != null){
		Stack stack = new Stack();
		if(head != null){
			stack.push(head);
			head = head.left; 
		} else{
			head = stack.pop();
			System.out.print(head.val + " ");
			head = head.right; 
		}
	}
	System.out.println();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731398.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号