二叉树,使用指针和链表实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树,使用指针和链表实现相关的知识,希望对你有一定的参考价值。

Here is pointer implementation, not tested finally.
  1. #ifndef __POKAZIVAC__
  2. #define __POKAZIVAC__
  3. #include <iostream>
  4. namespace stablo_pokazivac{
  5.  
  6.  
  7. struct element{
  8. float label;
  9. struct element *left, *right;
  10. };
  11.  
  12. element *LeftChildB(element *n, element *T){
  13. return n->left;
  14. }
  15.  
  16. element *RightChildB(element *n, element *T){
  17. return n->right;
  18. }
  19.  
  20. float LabelB(element *n, element *T){
  21. return n->label;
  22. }
  23.  
  24. void ChangeLabelB(float x, element *n, element *T){
  25. n->label=x;
  26. }
  27.  
  28. element *RootB(element *T)
  29. {
  30. return T;
  31. }
  32.  
  33. bool CreateLeftB(float x, element *n, element *T){
  34. if(n->left) return false;
  35. element *novi=new element;
  36. novi->left=NULL;
  37. novi->right=NULL;
  38. novi->label=x;
  39. n->left=novi;
  40. }
  41. bool CreateRightB(float x, element *n, element *T){
  42. if(n->right) return false;
  43. element *novi=new element;
  44. novi->left=NULL;
  45. novi->right=NULL;
  46. novi->label=x;
  47. n->right=novi;
  48. }
  49.  
  50. void DeleteB(element *n, element *T)
  51. {
  52. if(n->left) DeleteB(n->left,T);
  53. if(n->right) DeleteB(n->right,T);
  54. delete n;
  55. }
  56.  
  57. element *ParentB(element *n, element *T)
  58. {
  59. if(T->left==n||T->right==n) return NULL;
  60. if(T->left->left!=n&&T->left->right!=n) ParentB(n,T->left);
  61. else return T->left;
  62. if(T->right->left!=n&&T->right->right!=n) ParentB(n,T->right);
  63. else return T->right;
  64.  
  65. };
  66.  
  67. };
  68. #endif

以上是关于二叉树,使用指针和链表实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习---二叉树简单实现

LeetCode114 二叉树展开为链表 ---二叉树题 三种解法 (递归) (迭代) (前驱节点)

二叉树的Java实现及特点总结

java数据结构:二叉树

树的实现与应用:1.给定一棵用链表表示的二叉树,其根指针为root,试写出求二叉树结点数目。

15 道二叉树手写算法题