2019独角兽企业重金招聘Python工程师标准>>>

package tree;import java.util.Stack;/**二叉树**/
public class BinaryTree {public static void main(String[] args) {BinaryTree tree=new BinaryTree();tree.createBinaryTree();tree.RLN_Order(tree.root);tree.noneRecPostOrder(tree.root);}private TreeNode root=null;public BinaryTree(){root=new TreeNode(1,"rootNode(A)");}public  void createBinaryTree(){TreeNode newNodeB=new TreeNode(2,"B");TreeNode newNodeC=new TreeNode(3,"C");TreeNode newNodeD=new TreeNode(4,"D");TreeNode newNodeE=new TreeNode(5,"E");TreeNode newNodeF=new TreeNode(6,"F");TreeNode newNodeG=new TreeNode(7,"G");TreeNode newNodeH=new TreeNode(8,"H");TreeNode newNodeI=new TreeNode(9,"I");TreeNode newNodeJ=new TreeNode(10,"J");root.left=newNodeB;root.right=newNodeC;newNodeB.left=newNodeD;newNodeB.right=newNodeE;newNodeC.left=newNodeF;newNodeC.right=newNodeG;newNodeF.left=newNodeH;newNodeG.left=newNodeI;newNodeG.right=newNodeJ;}public boolean isEmpty(){return root==null;}public int height(){return height(root);}public int size(){return size(root);}/*** 求树的高度*  int i=(node.left==null)?(0):(height(node.left));int j=(node.right==null)?(0):(height(node.right));* **/private int height(TreeNode node){if(node==null){return 0;}else{int i=(node.left==null)?(0):(height(node.left));int j=(node.right==null)?(0):(height(node.right));return (i<j)?(j+1):(i+1);}}/**求树的大小**/private int size(TreeNode node){if(node==null){return 0;}else{return 1+size(node.left)+size(node.right);}}/**返回双亲节点**/public TreeNode parent(TreeNode element){return (root==null || root==element)?(null):(parent(root,element));}private TreeNode parent(TreeNode subtree,TreeNode element){if(subtree==null){return null;}if(subtree.left==element || subtree.right==element ){return subtree;}TreeNode p=parent(subtree.left,element);if(p!=null){return p;}else{return parent(subtree.right,element);}}/**左子节点**/public TreeNode getLeftChildNode(TreeNode element){return (element!=null)?(element.left):(null);}/**右子节点**/public TreeNode getRightChildNode(TreeNode element){return (element!=null)?(element.right):(null);}/**通过某个节点摧毁这个节点及其下面的子节点**/public void destroy(TreeNode node){if(node !=null){destroy(node.left);/**删除左边的子节点**/destroy(node.right);/**删除右边的子节点**/node=null;/**删除该节点**/}}/**根据某个节点遍历该节点的属性及其子节点**/public void traverse(TreeNode node){if(node !=null){System.out.println("key---->"+node.key+"    name---->"+node.date);traverse(node.left);traverse(node.right);}}/**node 表示根(N)     left  表示左(L)    right表示右边(R)**//**前根遍历(递归)**/public void NLR_Order(TreeNode node){if(node !=null){visted(node);NLR_Order(node.left);NLR_Order(node.right);}}/**中根遍历(递归)**/public void LNR_Order(TreeNode node){if(node !=null){LNR_Order(node.left);visted(node);LNR_Order(node.right);}}/**中根遍历(递归)**/public void RLN_Order(TreeNode node){if(node !=null){RLN_Order(node.right);RLN_Order(node.left);visted(node);}}/** 前根 (前序) 遍历的非递归实现   **/public void noneRecPreOrder(TreeNode node){  Stack<TreeNode> s = new Stack<TreeNode>();s.push(node);while(!s.isEmpty()) {TreeNode temp = (TreeNode)s.pop();visted(temp);if(temp.right != null) s.push(temp.right);if(temp.left != null) s.push(temp.left);}}  /** 中跟遍历的非递归实现   **/public void noneRecInOrder(TreeNode node){Stack<TreeNode> stack=new Stack<TreeNode>();TreeNode temp=node;while(temp!=null || !stack.isEmpty()){if(temp!=null){stack.push(temp);temp=temp.left;}else{temp=stack.pop();visted(temp);temp=temp.right;}}}/** 后跟遍历的非递归实现   **/public void noneRecPostOrder(TreeNode p){  }/**显示该节点的key 和 date**/public void visted(TreeNode node){node.isVisted=true;System.out.println("key------>"+node.key+"    name----->"+node.date);}@SuppressWarnings("unused")private class TreeNode{private int key;private String date;private TreeNode left=null;private TreeNode right=null;private boolean isVisted=false;public TreeNode(int key,String date){this.key=key;this.date=date;}}}

转载于:https://my.oschina.net/u/2611757/blog/748941

java二叉树的创建,遍历及其他方法相关推荐

  1. Java 二叉树后序遍历(递归/非递归)

    Java 二叉树后序遍历(递归/非递归) 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次. 设L.D.R分 ...

  2. Java 二叉树中序遍历(递归/非递归)

    Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...

  3. java二叉树的深度优先遍历_二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式...

    1 packageSolution;2 3 importjava.util.LinkedList;4 importjava.util.Queue;5 importjava.util.Stack;6 7 ...

  4. Java二叉树后序遍历:递归与迭代

    二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树:左子树和右子树又同样都是二叉树. 如下便是一棵二叉树: 二叉树的后序遍历方式为: 1. 如果根节点有左 ...

  5. Java二叉树逆序遍历_二叉树遍历小结

    二叉树遍历小结 声明 0 二叉树遍历概述 二叉树遍历:按照既定序,对每个节点仅访问一次: 二叉树非递归遍历思想:参考这篇博文,核心思想是存在重合元素的局部有序保证整体有序,由于二叉树的结构特点,二叉树 ...

  6. java iterator map_Java循环遍历输出map方法

    1.使用entries来遍历(entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry) 使用说明:该方法只能用于java 5或者更高的版本:如果遍历的map是一个空值,循 ...

  7. 随机产生单词java_关于java:如何创建随机单词选择器方法

    我对JAVA很新,只是学习而已.我正在做一个Java任务,我不太明白,我应该创建一个方法,它将接收一个字符串数组,并从数组中返回一个随机选择的STATE.具体说明如下:*getrandomword-- ...

  8. java 二叉树的各种遍历

    先序中序后序,递归与非递归,默认构造的排序二叉树 package Tree;import java.util.Stack;public class BinaryTree {class Node{int ...

  9. Java中怎样创建线程安全的方法

    面试问题: 下面的方法是否线程安全?怎样让它成为线程安全的方法? class MyCounter {private static int counter = 0;public static int g ...

最新文章

  1. Windows Server 2012关闭Server Manager开机自启动
  2. Java设计模式10:观察者模式
  3. 类方法的实例python_Python Class 的实例方法/类方法/静态方法
  4. (64)FPGA模块例化(generate)
  5. 【编程珠玑】第六章 程序性能分析
  6. 2010年3月blog汇总:企业架构、团队管理
  7. 开源安卓播放器:Dolphin Player 简单分析
  8. PMP 第六版 p25 矩阵图 方便记忆 口诀
  9. java学生管理系统项目实训报告
  10. DNS云学堂 | 行车不规范亲人两行泪,NS不规范运维两行泪
  11. 如何将OnlyOffice与NextCloud集成
  12. 榆熙科技电商:拼多多买家交易评价内容都包含哪些?
  13. 镂空三角形(for循环找规律)
  14. c语言西华大学陈晓亮,计算机与软件工程学院
  15. CSS 内边距与外边距
  16. 关于Pillow与PIL
  17. Windows SubSystem for Linux(WSL)设置默认和设置默认登陆用户
  18. java的splititeration,Java Spliterator.estimateSize方法代碼示例
  19. 车贷乱象横生,修炼好内功方为易鑫车贷上上之策
  20. TCP 客户端程序开发步骤

热门文章

  1. EasyUi – 1.入门
  2. ++操作你还在使用加锁去保证线程的安全吗?确定不了解一下CAS机制?
  3. app测试过程和重点关注内容
  4. 把CheckBox的方块换成图片或其他
  5. C语言把文件空格删去,关于文件操作,碰到空格就换行
  6. vscode php函数提醒,解决vscode格式保存后出现的问题
  7. java socket 实现 http_Java Socket编程 - 基于Socket实现HTTP下载客户端
  8. 大专适合学习php么_我想自学PHP,可以么?
  9. linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...
  10. 老前端工程师现身说法,2021Web前端开发学习路线图