fbpx
วิกิพีเดีย

ต้นไม้นิพจน์ทวิภาค

ต้นไม้พิจน์ หรือ binary expression tree เป็นต้นไม้แบบไบนารี (Binary Tree) ที่มีการสร้างขึ้นจากตัวกระทำ(operand) และ เครื่องหมาย(operators) ทางคณิตศาสตร์ของนิพจน์ โดยการวางตัวกระทำที่ leaf node และวางเครื่องหมายไว้ที่ root node

การสร้าง Expression Tree

จะมีการนำ Postfix Expression มาใช้ในการทำ Expression tree

1. เริ่มจากการอ่านนิพจน์ทางคณิตศาสตร์ (Expression) ทีละตัว

2. ถ้าตัวที่ได้เป็น Operand (ตัวถูกดำเนินการ) ให้สร้างโหนดของ tree หนึ่งโหนดแล้ว push ข้อมูลลงบน Stack

3. หากตัวที่อ่านได้เป็น Operator (ตัวดำเนินการ) ให้ทำการ pop ข้อมูลออกจาก Stack 2 ครั้ง เนื่องจาก Operator ใช้เป็น Binary Operator (Operator 1 ตัว ต้องการ Operand 2 ตัว) ซึ่งจะได้ trees T1 และ T2 (T1 นำออกก่อน) แล้วให้นำมาสร้างเป็น tree ใหม่ที่มีราก (root) เป็นตัว operator และมี left และ right children เป็น T2 และ T1 ตามลำดับ จากนั้นให้ใส่ tree ใหม่นี้กลับลง stack

ตัวอย่างของ Expression Tree

 
เป็นตัวอย่างต้นไม้นิพจน์ของ (a+(b*c)) + ((d+e)*f)

Code ของ Expression Tree

class ExpressionTree: def __init__(self , value): self.value = value self.left = None self.right = None def isOperator(char): if (char == '+' or char == '-' or char == '*' or char == '/' or char == '^'): return True else: return False def buildTree(postfix): stack = [] for char in postfix : if not isOperator(char): t = ExpressionTree(char) stack.append(t) else: t = ExpressionTree(char) t1 = stack.pop() t2 = stack.pop() t.right = t1 t.left = t2 stack.append(t) t = stack.pop() return t def inorder(t): alist = [] if t is not None: alist.append(t.value) alist = inorder(t.left) + alist + inorder(t.right) return alist 

แหล่งอ้างอิง

geeksforgeeks Expression Tree ค้นหาเมื่อ 30 มีนาคม 2561

nattee ต้นไม้นิพจน์ ค้นหาเมื่อ 30 มีนาคม 2561

นไม, พจน, ทว, ภาค, นไม, จน, หร, binary, expression, tree, เป, นต, นไม, แบบไบนาร, binary, tree, การสร, างข, นจากต, วกระทำ, operand, และ, เคร, องหมาย, operators, ทางคณ, ตศาสตร, ของน, พจน, โดยการวางต, วกระทำท, leaf, node, และวางเคร, องหมายไว, root, node, เน, อหา,. tnimphicn hrux binary expression tree epntnimaebbibnari Binary Tree thimikarsrangkhuncaktwkratha operand aela ekhruxnghmay operators thangkhnitsastrkhxngniphcn odykarwangtwkrathathi leaf node aelawangekhruxnghmayiwthi root node enuxha 1 karsrang Expression Tree 1 1 twxyangkhxng Expression Tree 1 2 Code khxng Expression Tree 2 aehlngxangxingkarsrang Expression Tree aekikhcamikarna Postfix Expression maichinkartha Expression tree1 erimcakkarxanniphcnthangkhnitsastr Expression thilatw2 thatwthiidepn Operand twthukdaeninkar ihsrangohndkhxng tree hnungohndaelw push khxmullngbn Stack3 haktwthixanidepn Operator twdaeninkar ihthakar pop khxmulxxkcak Stack 2 khrng enuxngcak Operator ichepn Binary Operator Operator 1 tw txngkar Operand 2 tw sungcaid trees T1 aela T2 T1 naxxkkxn aelwihnamasrangepn tree ihmthimirak root epntw operator aelami left aela right children epn T2 aela T1 tamladb caknnihis tree ihmniklblng stack twxyangkhxng Expression Tree aekikh epntwxyangtnimniphcnkhxng a b c d e f Code khxng Expression Tree aekikh class ExpressionTree def init self value self value value self left None self right None def isOperator char if char or char or char or char or char return True else return False def buildTree postfix stack for char in postfix if not isOperator char t ExpressionTree char stack append t else t ExpressionTree char t1 stack pop t2 stack pop t right t1 t left t2 stack append t t stack pop return t def inorder t alist if t is not None alist append t value alist inorder t left alist inorder t right return alistaehlngxangxing aekikhgeeksforgeeks Expression Tree khnhaemux 30 minakhm 2561nattee tnimniphcn khnhaemux 30 minakhm 2561ekhathungcak https th wikipedia org w index php title tnimniphcnthwiphakh amp oldid 7604992, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม