मान लीजिए, हमें एक एन-आर्य वृक्ष प्रदान किया गया है जिसकी जड़ हमें 'जड़' दी गई है। हमें पूर्ण एन-आरी बाइनरी ट्री की एक प्रति बनानी होगी और दोनों पेड़ों का प्रीऑर्डर ट्रैवर्सल करना होगा। कॉपी किए गए पेड़ को दूसरे रूट नोड का उपयोग करके संग्रहीत किया जाना है। पेड़ की नोड संरचना नीचे दी गई है -
Node: value : <integer> children : <array>
तो, अगर इनपुट पसंद है
, तो आउटपुट होगा
[14, 27, 32, 42, 56, 65]
इनपुट ट्री और आउटपुट ट्री का प्रीऑर्डर प्रतिनिधित्व वैसा ही होगा जैसा ट्री की एक सटीक कॉपी बनाई गई है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर रूट खाली नहीं है, तो
-
वापसी जड़
-
-
सिर :=रूट के मान के साथ एक नया नोड
-
q :=एक नया डेक जिसमें तत्व जड़ और शीर्ष शामिल हैं
-
जबकि q खाली नहीं है, करें
-
नोड:=q से पहला तत्व पॉप करें
-
क्लोन:=क्यू से पहला तत्व पॉप करें
-
नोड.चिल्ड्रेन में प्रत्येक chld के लिए, करें
-
new_n :=एक नया नोड जिसमें chld का मान हो
-
क्लोन के बच्चों के लिए new_n संलग्न करें
-
q के अंत में chld और new_n डालें
-
-
-
वापसी सिर
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from queue import deque class Node: def __init__(self, value, child = None) -> None: self.val = value self.children = [] if child != None: for value in child: self.children.append(value) def solve(root): if not root: return root head = Node(root.val) q = deque([(root, head)]) while q: node, cloned = q.popleft() for chld in node.children: new_n = Node(chld.val) cloned.children.append(new_n) q.append((chld,new_n)) return head def treeprint(node, tree): if node == None: tree.append("None") return tree if tree == None: tree = [] tree.append(node.val) for child in node.children: treeprint(child, tree) return tree node6 = Node(65) node5 = Node(56) node4 = Node(42, [node5, node6]) node3 = Node(32) node2 = Node(27) node1 = Node(14, [node2, node3, node4]) root = node1 copynode = solve(root) print(treeprint(copynode, None))
इनपुट
node6 = Node(65) node5 = Node(56) node4 = Node(42, [node5, node6]) node3 = Node(32) node2 = Node(27) node1 = Node(14, [node2, node3, node4]) root = node1
आउटपुट
[14, 27, 32, 42, 56, 65]