当前位置:   article > 正文

使用Java实现二叉树的创建和前序、中序、后序三种遍历_java键盘输入二叉树的前序和中序输出后序

java键盘输入二叉树的前序和中序输出后序

今天复习了一下二叉树,自己试着用代码实现了一下二叉树的创建和三种遍历,既是巩固一下二叉树的要点,也是练习一下java代码,毕竟有时间没有写代码了(都快忘了咋写了)

1.节点类

  1. package Tree;
  2. /**
  3. * 节点类
  4. */
  5. public class Node {
  6. private char data; //数据就用字符表示,访问节点数据就是用打印字符代替
  7. private Node lchild;//左节点
  8. private Node rchild;//右节点
  9. public Node() {
  10. }
  11. public char getData() {
  12. return data;
  13. }
  14. public void setData(char data) {
  15. this.data = data;
  16. }
  17. public Node getLchild() {
  18. return lchild;
  19. }
  20. public void setLchild(Node lchild) {
  21. this.lchild = lchild;
  22. }
  23. public Node getRchild() {
  24. return rchild;
  25. }
  26. public void setRchild(Node rchild) {
  27. this.rchild = rchild;
  28. }
  29. }

2.二叉树类和创建二叉树的方法

  1. /**
  2. * 二叉树类
  3. */
  4. public class TreeNode {
  5. private Node root; //根节点
  6. private static char[] chars;//用字符数组来接收二叉树的字符序列
  7. private static int index=0;
  8. public TreeNode() {
  9. Scanner sc = new Scanner(System.in);
  10. //这里通过用前序遍历的方式创建二叉树
  11. //所以输入的字符串序列必须的是符合前序遍历的要求
  12. //其他后序或者中序方式的大同小异
  13. System.out.println("输入二叉树前序遍历序列:");
  14. chars = sc.next().toCharArray();
  15. root = create(root);//调用创建方法
  16. }
  17. //使用前序遍历创建二叉树
  18. private static Node create(Node node){
  19. if (chars[index] == '#') { //用#字符表示空节点
  20. index++;
  21. return null;
  22. }
  23. else
  24. {
  25. Node newNode = new Node();
  26. newNode.setData(chars[index++]);
  27. newNode.setLchild(create(newNode.getLchild()));
  28. newNode.setRchild(create(newNode.getLchild()));
  29. return newNode;
  30. }
  31. }
  32. }

3.前序,中序,后序遍历

  1. //前序遍历
  2. public void front(Node node){
  3. if (node == null){
  4. //如果节点为空则输出#字符并返回
  5. System.out.print('#');
  6. return;
  7. }
  8. else {
  9. //节点不为空,则访问节点,同时依次遍历左节点和右节点
  10. System.out.print(node.getData());
  11. front(node.getLchild());
  12. front(node.getRchild());
  13. }
  14. }
  15. //中序遍历
  16. public void centre(Node node){
  17. if (node == null){
  18. //如果节点为空则输出#字符并返回
  19. System.out.print('#');
  20. return;
  21. }
  22. else {
  23. //节点不为空,继续访问左节点,至之将左节点全部访问
  24. centre(node.getLchild());
  25. System.out.print(node.getData());
  26. centre(node.getRchild());
  27. }
  28. }
  29. //后序遍历
  30. public void back(Node node){
  31. if (node == null){
  32. //如果节点为空则输出#字符并返回
  33. System.out.print('#');
  34. return;
  35. }
  36. else {
  37. //节点不为空,继续访问左右节点,至之将左右节点全部访问
  38. back(node.getLchild());
  39. back(node.getRchild());
  40. System.out.print(node.getData());
  41. }
  42. }

以上就是代码实现,二叉树的遍历算是树这种数据结构中比较简单的知识点了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/668786
推荐阅读
相关标签
  

闽ICP备14008679号