二叉树问题
来源:互联网 发布:淘宝网睡衣套装 编辑:程序博客网 时间:2024/05/17 01:35
定义二叉树
static class treeNode{ public int value; public treeNode left; public treeNode right; public treeNode(int value){ this.value=value; } }
- 打印二叉树
/** * 递归:先序遍历二叉树(根左右),中序(左根右)类似,后序(左右根) * @param head */ public void preOrder(treeNode head){ if(head!=null){ System.out.println(head.value); preOrder(head.left); preOrder(head.right); } } /** * 非递归打印前序遍历(根左右) * 1.定义栈。2.根节点出栈,如果右节点不为空进栈,左节点不为空进栈。(原因:栈先进后出) * @param head */ public void preOrder2(treeNode head){ if(head!=null){ Stack<treeNode> stack = new Stack<>(); stack.add(head); while (!stack.isEmpty()){ head=stack.pop(); System.out.println(head.value); if(head.right!=null){ stack.push(head.right); } if(head.left!=null){ stack.push(head.left); } } } } /** *中序非递归(左根右) * @param head */ public void inOrder(treeNode head){ if(head!=null){ Stack<treeNode> stack = new Stack<>(); while (!stack.isEmpty()&&head!=null){ if(head!=null){ stack.push(head); head=head.left; }else { head=stack.pop(); System.out.println(head.value); head=head.right; } } } } /** * 后序遍历 * @param head */ public void posOreder(treeNode head){ if(head!=null){ Stack<treeNode> s1 = new Stack<>(); Stack<treeNode> s2 = new Stack<>(); s1.push(head); while (!s1.isEmpty()){ head=s1.pop(); s2.push(head); if(head.left!=null){ s1.push(head.left); } if(head.right!=null){ s1.push(head.right); } } while (!s2.isEmpty()){ System.out.println(s2.pop().value); } } }
阅读全文
1 0
- 二叉树遍历问题
- 数据结构-二叉树 问题
- 二叉树遍历问题
- 二叉树问题
- 二叉树的问题
- 二叉树问题
- 二叉树相关问题
- 二叉树相关问题
- 二叉树问题
- 二叉树路径问题
- 二叉树问题
- 关于二叉树问题
- 二叉树递归问题
- 二叉树相关问题
- 二叉树相关问题
- 二叉树深度问题
- 二叉树相关问题
- 二叉树问题1
- iptables防火墙规则的添加、删除、修改、保存
- Oil Deposits
- MaterialDesign-Material Design动画效果(四)
- Unity -- 导航寻路系统
- Java开发一定要知道的日志性能那些事
- 二叉树问题
- arduino引脚图
- Matlab 简单计算PDF和CDF
- 阿里云ubuntu nginx无法访问
- ROS-indigo_stage-simulator
- nginx upload在java中的应用
- leetCodeReorderList
- ElasticSearch 常用的查询过滤语句
- Ionic进行PC端Web开发时通过脚本压缩提高第一次加载效率