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...