您好,欢迎访问一九零五行业门户网

将给定的二叉搜索树中的所有较大值添加到每个节点中

在这里我们将看到一个有趣的问题,我们将为一个给定的二叉搜索树中的每个节点添加更大的值。因此,初始和最终的树将如下所示 -
算法bstupdate(root, sum) -
begin if root is null, then stop bstupdate(right of room, sum) sum := sum + value of root update root value using sum bstupdate(left of room, sum)end
示例#include<iostream>using namespace std;class node { public: int data; node *left, *right; }; node *getnode(int item) { node *newnode = new node(); newnode->data = item; newnode->left = newnode->right = null; return newnode;}void updatebst(node *root, int *sum) { if (root == null) return; updatebst(root->right, sum); //update right sub tree *sum = *sum + root->data; root->data = *sum; //update root data updatebst(root->left, sum); //update left sub tree}void bstupdate(node *root) { int sum = 0; updatebst(root, &sum);}void inorder(node *root) { if (root != null) { inorder(root->left); cout<<root->data<<" "; inorder(root->right); }}node* insert(node* node, int data) { if (node == null) return getnode(data); if (data <= node->data) //go to left node->left = insert(node->left, data); else //go to right node->right = insert(node->right, data); return node;}int main() { int data[] = {50, 30, 20, 40, 70, 60, 80}; int n = sizeof(data)/sizeof(data[0]); node *root = null; for(int i = 0; i < n; i++) { root = insert(root, data[i]); } bstupdate(root); inorder(root);}
输出350 330 300 260 210 150 80
以上就是将给定的二叉搜索树中的所有较大值添加到每个节点中的详细内容。
其它类似信息

推荐信息