प्रौद्योगिकी साझेदारी

वृक्षस्तरस्य भ्रमणम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

वृक्षस्य श्रेणीबद्धं भ्रमणं एकं भ्रमणविधिं निर्दिशति यत् वृक्षस्य सर्वाणि नोड्स् श्रेणीक्रमेण भ्रमति । विशिष्टानि सोपानानि यथा सन्ति ।

  1. मूलनोड्तः आरभ्य मूलनोड् इत्यस्य पङ्क्तिं कुर्वन्तु ।
  2. यावत् पङ्क्तिः रिक्तः न भवति तावत् लूप् कुर्वन्तु:
    • पङ्क्तितः एकं नोड् पोप् कृत्वा तत् अभिगच्छति ।
    • अस्य नोड् इत्यस्य सर्वाणि बालनोड् क्रमेण पङ्क्तिं कुर्वन्तु ।
  3. सम्पूर्ण परिभ्रमण।

स्तरपरिभ्रमणस्य विषये सम्बन्धितज्ञानबिन्दवः : १.

  1. कतारः : श्रेणीबद्धयात्रायाः कृते अस्थायीरूपेण नोड्-सञ्चयनाय कतारस्य उपयोगः आवश्यकः भवति । प्रत्येकं नोडस्य अभिगमनसमये तस्य बालनोडाः क्रमेण पङ्क्तौ स्थापिताः भवन्ति, ततः पङ्क्तिस्य शिरः नोड् अग्रिमचक्रे प्रवेशार्थं बहिः गृह्यन्ते
  2. लूप्: लेवल ट्रेवर्सल् इत्यस्य कृते लूप् ऑपरेशन् आवश्यकं भवति यावत् कतारः रिक्तः न भवति । लूप्-काले नोड्स् निरन्तरं योजिताः भवन्ति, यावत् सर्वे नोड्स् पारिताः न भवन्ति तावत् यावत् पङ्क्तिविहीनाः भवन्ति ।
  3. नोड-प्रवेशः : नोड्-पर्यन्तं प्रवेशः आवश्यकतानुसारं निर्धारयितुं शक्यते, नोडस्य मूल्यं मुद्रयितुं, अन्यकार्यं कर्तुं वा भवितुम् अर्हति ।
  4. बालनोड्-सङ्केतीकरणम् : श्रेणीबद्ध-अनुक्रमणार्थं प्रत्येकस्य नोड्-समूहस्य सर्वेषां बाल-नोडानां पङ्क्तिकरणस्य आवश्यकता भवति यत् अनन्तरं लूप्-मध्ये अभिगमनं निरन्तरं कर्तुं शक्यते ।

विचारं:

  1. प्रथमं कतारं रचयन्तु, मूलनोड् च पङ्क्तिं कुर्वन्तु ।
  2. यावत् पङ्क्तिः रिक्तः न भवति तावत् लूप् कुर्वन्तु:
    • पङ्क्तितः एकं नोड् पोप् कृत्वा तत् अभिगच्छति ।
    • अस्य नोड् इत्यस्य सर्वाणि बालनोड् क्रमेण पङ्क्तिं कुर्वन्तु ।
  3. सम्पूर्ण परिभ्रमण।

एषः विचारः पङ्क्तिप्रयोगद्वारा श्रेणीबद्धयात्रायाः कार्यान्वयनस्य कुञ्जी अस्ति । प्रत्येकं नोडस्य पङ्क्तिविच्छेदनं कृत्वा अभिगमनं भवति चेत् तस्य बालनोडाः पङ्क्तिबद्धाः भवन्ति, अतः श्रेणीक्रमेण अभिगमः सुनिश्चितः भवति ।

उदाहरण:

102. द्विचक्रीयवृक्षस्य स्तरक्रमपरिभ्रमणम्

द्विचक्रीयवृक्षस्य मूलग्रन्थिं ददातुroot, तस्य नोड् मूल्यं प्रत्यागच्छतिस्तर-क्रम-परिभ्रमणम् . (अर्थात् सर्वेषां नोड्स् स्तर-स्तरं, वामतः दक्षिणत: भ्रमणं कुर्वन्तु)।

उदाहरणम् १ : १.

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

उदाहरणम् २ : १.

输入:root = [1]
输出:[[1]]

उदाहरणम् ३ : १.

输入:root = []
输出:[]
  1. // 层序遍历二叉树并返回结果列表
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. List<List<Integer>> lists = new ArrayList<>(); // 用于存储层序遍历结果的列表
  4. Queue<TreeNode> queue = new LinkedList<>(); // 辅助队列,用于层序遍历
  5. if (root == null) {
  6. return new ArrayList<List<Integer>>(); // 如果根节点为空,直接返回空列表
  7. }
  8. queue.add(root); // 将根节点加入队列
  9. while (!queue.isEmpty()) {
  10. int size = queue.size(); // 当前层的节点数
  11. List<Integer> list = new ArrayList<>(); // 用于存储当前层节点值的列表
  12. for (int i = 0; i < size; i++) {
  13. TreeNode node = queue.poll(); // 出队列
  14. list.add(node.val); // 将节点值加入当前层列表
  15. // 将当前节点的左右子节点加入队列,以便遍历下一层
  16. if (node.left != null) {
  17. queue.add(node.left);
  18. }
  19. if (node.right != null) {
  20. queue.add(node.right);
  21. }
  22. }
  23. lists.add(list); // 将当前层的节点值列表加入最终结果列表
  24. }
  25. return lists; // 返回层序遍历结果列表
  26. }