資料結構學習筆記之二叉樹 BST

2021-09-27 14:19:52 字數 1527 閱讀 1215

bst是二叉樹的一種,其中每個結點的左孩子小於該結點的值,右孩子大於於該結點的值,對該樹進行中序遍歷可以得到一組有序序列

//二叉搜尋樹

#include typedef struct node node;

typedef struct tree tree;

void insert(tree *tree, int value)

else

// if (value < temp->data)

// }

// temp = node;

while (temp != null)

else

}if (value < temp->data)

else }}

}}void preorder(node *node)

printf("%d\n", node->data);

preorder(node->lchild);

preorder(node->rchild);

}void inorder(node *node)

inorder(node->lchild);

printf("%d\n", node->data);

inorder(node->rchild);

}void postorder(node *node)

postorder(node->lchild);

postorder(node->rchild);

printf("%d\n", node->data);

}int get_height(node *node)

int left = get_height(node->lchild);

int right = get_height(node->rchild);

if (right > left)

else

}int get_max(node *node)

int max = node->data;

int left = get_max(node->lchild);

int right = get_max(node->rchild);

if (max < left)

if (max < right)

return max;

}int main() ;

int i;

tree t,*tree = malloc(sizeof(tree));

tree->root = t.root = null;

for (i = 0; i < 7; i++)

inorder(tree->root);

printf("\nh = %d", get_height(tree->root));

printf("\nmax = %d\n", get_max(tree->root));

return 0;

}

資料結構學習之二叉樹

一 為什麼用二叉樹,而不是三個指標域或是根據實際情況指定指標域?比如3,那麼有n個節點就是有3n個指標域,其中邊只有n條,那麼只有n 1個域非空,有2n 1個域為空,浪費空間。而對於2,那麼就只有n 1個域為空。而比如說根據實際來確定指標域,對於實現上是非常困難的。度為2的樹就是二叉樹。斜二叉樹 完...

資料結構學習筆記 二叉樹

樹,非線性表結構 樹有三個概念 高度從下向上數,起點是0 深度從上向下數,起點是0 層數從上向下數,起點是1 每個節點最多兩個叉 有兩種特殊二叉樹 滿二叉樹,除了葉子節點,每個節點都有左右兩個子節點 完全二叉樹,葉子節點都在最底下兩層,最後一層葉子節點都靠左排列,且除了最後一層,其它層節點個數都達到...

資料結構學習(1) 二叉樹

二叉樹結構 public class treenode 前序遍歷 根結點,左子樹,右子樹 public static void prenode treenode node,listtreelist 中序遍歷 左子樹,根結點,右子樹 public static void midnode treenod...