当前位置:   article > 正文

Java数据结构——链式二叉树_二叉树链化java

二叉树链化java

链式二叉树:

二叉树为链式存储结构,每个节点中有两个指针域,分别保存左右孩子指针


实现思路:

节点类BinaryTreeNode中保存数据和指向左右孩子的指针

二叉树类BinaryTree中保存二叉树根节点

二叉树的前序、中序、后序遍历实现:

在节点类中通过递归实现三种遍历方法,并在二叉树类中调用,实现从根节点进行遍历

二叉树的删除节点:

在节点类中实现删除节点方法,对当前节点的左右孩子是否为空和是否为待删除节点进行判断,若找到待删除节点,只需将当前节点的对应孩子节点指针置空,否则以此对左孩子和右孩子递归删除节点,在二叉树类中的删除节点方法需进行根节点是否为空和是否为待删除节点的判断,若根节点为待删除结点,则将根节点置空,也就是将整个二叉树置空


代码实现:

节点类BinaryTreeNode:

  1. public class BinaryTreeNode {
  2. public int data;
  3. public BinaryTreeNode left;
  4. public BinaryTreeNode right;
  5. public BinaryTreeNode(int data) {
  6. this.data = data;
  7. }
  8. @Override
  9. public String toString() {
  10. return "BinaryTreeNode{" + "data=" + data + '}';
  11. }
  12. //删除节点
  13. public void delete(int data) {
  14. if (this.left != null && this.left.data == data) {
  15. this.left = null;
  16. return;
  17. }
  18. if (this.right != null && this.right.data == data) {
  19. this.right = null;
  20. return;
  21. }
  22. if (this.left != null) {
  23. this.left.delete(data);
  24. }
  25. if (this.right != null) {
  26. this.right.delete(data);
  27. }
  28. }
  29. //前序遍历
  30. public void preOrder() {
  31. System.out.println(this);
  32. if (this.left != null) {
  33. this.left.preOrder();
  34. }
  35. if (this.right != null) {
  36. this.right.preOrder();
  37. }
  38. }
  39. //中序遍历
  40. public void inOrder() {
  41. if (this.left != null) {
  42. this.left.inOrder();
  43. }
  44. System.out.println(this);
  45. if (this.right != null) {
  46. this.right.inOrder();
  47. }
  48. }
  49. //后序遍历
  50. public void postOrder() {
  51. if (this.left != null) {
  52. this.left.postOrder();
  53. }
  54. if (this.right != null) {
  55. this.right.postOrder();
  56. }
  57. System.out.println(this);
  58. }
  59. }

二叉树类BinaryTree:

  1. public class BinaryTree {
  2. public BinaryTreeNode root;
  3. //删除节点
  4. public void delete(int data) {
  5. if (root != null) {
  6. if (root.data == data) {
  7. root = null;
  8. } else {
  9. root.delete(data);
  10. }
  11. } else {
  12. System.out.println("二叉树为空");
  13. }
  14. }
  15. //前序遍历
  16. public void preOrder() {
  17. if (this.root != null) {
  18. this.root.preOrder();
  19. } else {
  20. System.out.println("二叉树为空");
  21. }
  22. }
  23. //中序遍历
  24. public void inOrder() {
  25. if (this.root != null) {
  26. this.root.inOrder();
  27. } else {
  28. System.out.println("二叉树为空");
  29. }
  30. }
  31. //后序遍历
  32. public void postOrder() {
  33. if (this.root != null) {
  34. this.root.postOrder();
  35. } else {
  36. System.out.println("二叉树为空");
  37. }
  38. }
  39. }

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

闽ICP备14008679号