用 C++ 列印二叉搜尋樹的所有奇數節點


在這個問題中,我們給定一棵二叉搜尋樹,我們需要列印所有具有奇數值的節點。

二叉搜尋樹是一種特殊的樹,它具有以下屬性:

  • 左子樹的值始終小於根節點。

  • 右子樹的值始終大於根節點。

  • 左右子樹也應該遵循以上兩個屬性。

讓我們舉個例子來理解這個問題:

輸出 - 1 3 9

為了解決這個問題,一個簡單的方法是遍歷樹。在遍歷過程中,我們將檢查樹中每個節點的值。如果節點為奇數,則列印它,否則移動到樹的下一個節點。

程式的複雜度將取決於節點的數量。時間複雜度:O(n)。

示例

下面的程式展示了我們解決方案的實現:

即時演示

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int key;
   struct Node *left, *right;
};
Node* newNode(int item){
   Node* temp = new Node;
   temp->key = item;
   temp->left = temp->right = NULL;
   return temp;
}
Node* insertNode(Node* node, int key){
   if (node == NULL)
      return newNode(key);
   if (key < node->key)
      node->left = insertNode(node->left, key);
   else
      node->right = insertNode(node->right, key);
   return node;
}
void printOddNodes(Node* root){
   if (root != NULL) {
      printOddNodes(root->left);
      if (root->key % 2 != 0)
         cout<<root->key<<"\t";
      printOddNodes(root->right);
   }
}
int main(){
   Node* root = NULL;
   root = insertNode(root, 6);
   root = insertNode(root, 3);
   root = insertNode(root, 1);
   root = insertNode(root, 4);
   root = insertNode(root, 9);
   root = insertNode(root, 8);
   root = insertNode(root, 10);
   cout<<"Nodes with odd values are :\n";
   printOddNodes(root);
   return 0;
}

輸出

具有奇數值的節點為:

1 3 9

更新於: 2020年1月22日

228 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.