[关闭]
@chawuciren 2018-10-03T17:03:50.000000Z 字数 1534 阅读 587

CS15二叉树的各种遍历

未分类

  1. 上课没听懂折腾了很久所以交晚了
  2. 本质上任然是润智师兄的代码,终于弄懂了发现也没这么难,前中后序也折腾出来了,可喜可贺
  3. 迭代只能遍历一半(都不到),明天再倒腾
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct _TreeNode{
  4. int data;
  5. struct _TreeNode* left;
  6. struct _TreeNode* right;
  7. } TreeNode;
  8. TreeNode* buildNode(int Data);
  9. void inorder(TreeNode* root);
  10. void before(TreeNode* root);
  11. void after (TreeNode* root);
  12. void iteration(TreeNode* root);
  13. int main(){
  14. TreeNode* root = NULL;
  15. TreeNode* Left = NULL;
  16. TreeNode* Right = NULL;
  17. root = buildNode(3);
  18. Left = buildNode(2);
  19. Right = buildNode(5);
  20. root->left = Left;
  21. root->right = Right;
  22. TreeNode* LeftLeft = NULL;
  23. LeftLeft = buildNode(1);
  24. Left->left = LeftLeft;
  25. TreeNode* RightRight = NULL;
  26. RightRight = buildNode(6);
  27. Right->right = RightRight;
  28. TreeNode* RightLeft = NULL;
  29. RightLeft = buildNode(4);
  30. Right->left = RightLeft;
  31. iteration(root);
  32. return 1;
  33. }
  34. TreeNode* buildNode(int Data){
  35. /* 分配出一个新结点,并用node指针指向它 */
  36. TreeNode *node = NULL;
  37. node = (TreeNode*)malloc( sizeof(TreeNode) );
  38. /* 初始化结点内容 */
  39. node->data = Data;
  40. node->left = NULL;
  41. node->right = NULL;
  42. /* 将该节点返回 */
  43. return node;
  44. }
  45. /中序遍历
  46. void inorder(TreeNode* root){
  47. if( root == NULL )
  48. return;
  49. inorder(root->left); // 先遍历左子树
  50. printf("%d\n", root->data); // 访问根结点
  51. inorder(root->right); //再遍历右子树
  52. }
  53. 前序遍历
  54. void before(TreeNode* root)
  55. {
  56. if( root == NULL )
  57. return;
  58. printf("%d\n", root->data); //先访问节点
  59. before(root->left); //遍历左子树
  60. before(root->right); // 再遍历右子树
  61. }
  62. /*后序遍历*/
  63. void after (TreeNode* root)
  64. {
  65. if( root == NULL )
  66. return;
  67. after (root->left);// 后序遍历左子树
  68. after (root->right);// 后序遍历右子树
  69. printf("%d\n", root->data); // 访问节点
  70. }
  71. void iteration(TreeNode* root)
  72. {
  73. TreeNode* temp=root->data;
  74. while(root!=0)
  75. {
  76. printf("%d\n", root->data);
  77. root=root->left;
  78. }
  79. root=temp->right;
  80. {
  81. printf("%d\n", root->data);
  82. root=root->right;
  83. }
  84. }

在此输入正文

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注