第 6 章樹狀結構

Download 第  6  章樹狀結構

If you can't read please download the document

Upload: swann

Post on 08-Jan-2016

56 views

Category:

Documents


5 download

DESCRIPTION

第 6 章樹狀結構. 目次. 6.1 樹狀結構的專有名詞 6.2 二元樹 6.3 二元樹的表示方法 6.4 二元樹追蹤 6.5 引線二元樹 6.6 二元搜尋樹 6.7 堆積 6.8 集合的表示法 6.9 其它論題. A. C. D. B. H. G. I. E. F. M. N. J. K. L. 6.1 樹狀結構的專有名詞. 樹的表示法. 階度 1 2 3 4. 6.1 樹狀結構的專有名詞 (con.t). 樹狀結構的專有名詞 節點 (node) 與邊 (edge) - PowerPoint PPT Presentation

TRANSCRIPT

  • 6

  • 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9

  • 6.1

    1

    2

    3

    4

  • 6.1 (con.t)(node)(edge)(ancestor)(descendant)(parent node)(children node)(sibling node)(terminal node)(leaf node)

  • 6.1 (con.t)(degree)(level)(height)(depth)(forest)

  • 6.2 (right subtree)(left subtree)ABAB

  • 6.2 (con.t) 2/(left/right skewed tree)(a)(fully binary tree) (b)(complete binary tree) (c)

  • 6.2 (con.t)

  • 6.2 (con.t) i 2i-1i1()k2k-1k1n0n2 2 n0=n2+1Ex6.3

  • 6.3 (c)

    (c)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)1234567891011121314151st level2nd level3rd level4th level

  • 6.3 (con.t) (left link)(data)(right link)

  • 6.4 (traversal)(inorder) (preorder) (postorder)

  • 6.4 (con.t)(inorder) void inorder(Node type *tree){ if (tree != NULL){ inorder(tree->llink); printf("%d", tree->data); inorder(tree->rlink); }}

  • 6.4 (con.t)(preorder) void preorder(Node type *tree){ if (tree != NULL){ printf("%d", tree->data); preorder(tree->llink); preorder(tree->rlink); } }

  • 6.4 (con.t)(postorder)void postorder(Node type *tree){ if (tree != NULL){ postorder(tree->llink); postorder(tree->rlink); printf("%d", tree->data); } }

  • 6.5 LINKn+1LINK(n)LINK(thread)LINK(head node)

  • 6.5 (con.t) LINKLINK

  • 6.5 (con.t)LBIT = 1LLINKLBIT = 0LLINKRBIT = 1RLINKRBIT = 0RLINK

  • 6.5.1 (inorder successor)Node_type *insucc(Node_type *ptr){ Node_type *this_n; this_n = ptr->rlink; if (ptr->rbit == 1) while (this_n->lbit == 1) this_n = this_n->llink; return this_n;}

  • 6.5.1 (con.t)void tinorder(Node_type *tree, Node_type *head){ tree = head; printf(%d, tree->data); for(;;){ tree = insuc(tree); if(tree == head) return; printf(%d,tree->data); } }

  • 6.5.1 (con.t)(inorder predecessor)Node_type *pred(Node_type *ptr){ Node_type *this_n; this_n = ptr->llink; if(ptr->lbit == 1) while(this_n->rbit == 1) this_n = this_n->rlink; return this_n;}

  • 6.5.2 void insert_right(Node_type *node_parent, Node_type *node){ Node_type *w; node->rchild = node_parent->rchild; node->rbit = node_parent->rbit; node->lchild = node_parent; node->lbit = 0; node_parent->rchild = node; node_parent->rbit = 1; if ( node->rbit == 1 ){ /*nodetree*/ w = insucc( node ); w->lchild = node; }} TS

  • 6.5.2 (con.t)void insert_left(Node_type *node_parent, Node_type *node){ Node_type *w; node->lchild = node_parent->lchild; node->lbit = node_parent->lbit; node->rchild = node_parent; node->rbit = 0; node_parent->lchild = node; node_parent->lbit = 1; if ( node->lbit == 1 ){ /*node tree*/ w = inpred( node ); w->rchild = node; }} TS

  • 6.5.3

  • 6.5.3 (con.t)

    prev1child = this1child;prev1bit = 0

  • 6.5.3 (con.t) 4prev1child = this1child;prev1bit = 0

  • 6.6 (binary search tree)(key value)

  • 6.6.1 Ex

  • 6.6.1 (con.t) 48

  • 6.6.1 (con.t) 90

  • 6.6.2 (Ex 50)

  • 6.7 (Heap)()

  • 6.7 (con.t) Heap Sort Heap()()

  • 6.7 (con.t)

  • 6.7 (con.t) n n/2 n/2()

  • 6.7.1 Ex6-47

  • 6.7.1 (con.t)Ex 50(Heap)

  • 6.7.1 (con.t)

  • 6.7.2 Ex

  • 6.7.2 (con.t) 4010

  • 6.7.3 Min-HeapHeapMax-heapMin-HeapMin-Max-HeapdeapMax-HeapMin-HeapMax-HeapEx

  • 6.8 (Set)110S1={1, 3, 5, 7} S2={2, 4, 6} S3={8, 9,10}S1 S2 S3(disjoint set)S1 S2 S3S1 S2 S3

  • 6.8.1

    i p(i) i parent (p(i)-1parent)

    i12345678 910p(i)3411343188

  • 6.9 (forest)(1) (2) (3) 45Ex

  • 6.9 (con.t)(1) (45)(2) (3) 45Ex(1)(1):

  • 6.9 (con.t)(2)

    (3)(3):(2):

  • 6.9 (con.t)

  • 6.9.2 Ex FDHGIBEAC ABDFGHIEC

  • 6.9.2 (con.t)ACA

  • 6.9.2 (con.t)BFDHGIEEB

  • 6.9.2 (con.t)DFHGIFDHGID

  • 6.9.2 (con.t)GHIHGIG