二叉树,使用指针和链表实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树,使用指针和链表实现相关的知识,希望对你有一定的参考价值。
Here is pointer implementation, not tested finally.
#ifndef __POKAZIVAC__ #define __POKAZIVAC__ #include <iostream> namespace stablo_pokazivac{ struct element{ float label; struct element *left, *right; }; element *LeftChildB(element *n, element *T){ return n->left; } element *RightChildB(element *n, element *T){ return n->right; } float LabelB(element *n, element *T){ return n->label; } void ChangeLabelB(float x, element *n, element *T){ n->label=x; } element *RootB(element *T) { return T; } bool CreateLeftB(float x, element *n, element *T){ if(n->left) return false; element *novi=new element; novi->left=NULL; novi->right=NULL; novi->label=x; n->left=novi; } bool CreateRightB(float x, element *n, element *T){ if(n->right) return false; element *novi=new element; novi->left=NULL; novi->right=NULL; novi->label=x; n->right=novi; } void DeleteB(element *n, element *T) { if(n->left) DeleteB(n->left,T); if(n->right) DeleteB(n->right,T); delete n; } element *ParentB(element *n, element *T) { if(T->left==n||T->right==n) return NULL; if(T->left->left!=n&&T->left->right!=n) ParentB(n,T->left); else return T->left; if(T->right->left!=n&&T->right->right!=n) ParentB(n,T->right); else return T->right; }; }; #endif
以上是关于二叉树,使用指针和链表实现的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode114 二叉树展开为链表 ---二叉树题 三种解法 (递归) (迭代) (前驱节点)