mirror of
https://github.com/Hizenberg469/C1-Linux_SYS_Prog-AS-.git
synced 2026-04-20 10:52:22 +03:00
59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
/*
|
|
* =====================================================================================
|
|
*
|
|
* Filename: tree.h
|
|
*
|
|
* Description:
|
|
*
|
|
* Version: 1.0
|
|
* Created: 05/02/24 09:52:32 PM IST
|
|
* Revision: none
|
|
* Compiler: gcc
|
|
*
|
|
* Author: YOUR NAME (),
|
|
* Organization:
|
|
*
|
|
* =====================================================================================
|
|
*/
|
|
|
|
#ifndef __TREE__
|
|
#define __TREE__
|
|
|
|
typedef struct tree_node {
|
|
struct tree_node *left;
|
|
struct tree_node *right;
|
|
struct tree_node *parent;
|
|
int data;
|
|
} tree_node_t;
|
|
|
|
|
|
typedef struct tree {
|
|
tree_node_t *root;
|
|
} tree_t;
|
|
|
|
int
|
|
add_tree_node_by_value(tree_t *tree, int n);
|
|
|
|
tree_t* init_tree(void);
|
|
|
|
tree_node_t* init_tree_node(int n);
|
|
|
|
/*Pre-requisites functions to write iterative
|
|
* macros for a tree.*/
|
|
|
|
tree_node_t *
|
|
get_left_most (tree_node_t *node);
|
|
|
|
tree_node_t *
|
|
get_next_inorder_succ (tree_node_t *node);
|
|
|
|
#define ITERATE_BST_BEGIN(treeptr, currentnodeptr) \
|
|
{ \
|
|
tree_node_t *_next = NULL; \
|
|
for(currentnodeptr = get_left_most(treeptr->root); currentnodeptr != NULL ; currentnodeptr = _next){ \
|
|
_next = get_next_inorder_succ(currentnodeptr);
|
|
|
|
#define ITERATE_BST_END }}
|
|
|
|
#endif
|