|
What was the exact error message?
Why don't you use the debugger?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
I have a tree such that it can be uniquely determined from its preorder.I have information on which are internal nodes and which are leaves.Something like this
----0
----/-\
---0--0
--/-\--/-\
-1--0-1--1
----/-\
----1--1
the preorder being 001011011
I need some logic to get the tree structure from this preorder
|
|
|
|
|
Following is not the full fleshed code, it's just a skeletal that gives you an idea for implementation (as u just asked for logic ). Better you implement the rest of the part.
class node
{
node *m_pLeftNode;
node *m_pRightNode;
int m_iData;
public :
PostOrderTravarse()
{
m_pLeftNode->PostOrderTravarse();
m_pRightNode->PostOrderTravarse();
cout<<m_iData;
}
PreOrderTravarse()
{
cout<<m_iData;
m_pLeftNode->PreOrderTravarse();
m_pRightNode->PreOrderTravarse();
}
InOrderTravarse()
{
m_pLeftNode->InOrderTravarse();
cout<<m_iData;
m_pRightNode->InOrderTravarse();
}
};
All the best !
- Malli...!
|
|
|
|
|
ummmm...those are tree traversals
I need to construct my tree FROM a preorder traversal
|
|
|
|
|
You may get the same sequence from different binary trees. So its not possible.
|
|
|
|
|
Yup ! I agree with you, one can't get the same by rebuilding the tree from traversals.
- Malli...!
|
|
|
|
|
Not trying the be bossy or rude...but please look at my question...my tree CAN be uniquely determined from the preorder because I have information about internal nodes and leaves.Its a huffman tree.
|
|
|
|
|
aksgh wrote: Its a huffman tree.
Yes didnt see that, you are right. So, for a huffman tree you could the following
typedef struct _node_info {
int is_leaf;
char value;
}node_info;
typedef struct _node {
node_info inf;
node* l;
node* r;
} node;
node* built_tree(node_info* preorder_array, int preorder_array_size)
{
node *root, *n;
int i;
root = malloc(sizeof(node));
stack_push(s, root);
for (i = 0; i < preorder_array_size; i++) {
assert(!stack_empty(s));
n = stack_pop(s);
n->inf = preorder_array[i];
if (!n->inf.is_leaf) {
n->r = malloc(sizeof(node));
stack_push(s, n->r);
n->l = malloc(sizeof(node));
stack_push(s, n->l);
}
}
assert(stack_empty(s));
return root;
}
* i dont set r,l members to zero when i create a node, in order to save some space, but it is something you must do
modified on Friday, September 19, 2008 8:09 AM
|
|
|
|
|
Hi friends,
I need to make a transparent control over Mobile screen.
Eg: Some video is displaying on mobile and my transparent control can be seen on that screen.
Could anybody tell me how to achieve that ??
|
|
|
|
|
How to determine actual virtual memory used for a process using mfc
|
|
|
|
|
Adopt the similar strategy as posted by me below!
Regards,
Rane
|
|
|
|
|
Do you need to SetProcessWorkingSetSize ?
|
|
|
|
|
|
How to determine actual memory used for a process
|
|
|
|
|
Use OpenProcess() to get a handle to the process that you want to monitor.Then use CreateToolhelp32Snapshot() API which will give you lists of the modules (DLLs) that are a part of your process image which you can then iterate using Module32First/Module32Next() and obtain the load addresses and extents.
It will also give you a list of the heaps, runtime allocated memory used by alloc/free and stacks. You then use Heap32ListFirst/Heap32ListNext to iterate those and obtain their start addresses and extents. You then use those addresses with ReadProcessMemory() to actually read the Random Access Memory.
Also, be sure to suspend the target process otherwise things could change the moment after you obtain your information.
Regards,
Rane
|
|
|
|
|
For example,
there are two edit mode, one is for drawing a rect, the other is for dragging a rect.
And I might write both in one message handler (eg. OnMouseMove).
It become less clear when there are more edit modes.
Any way to solve this problem?
system
|
|
|
|
|
Why don't you have a flag, identifying the mode in which you are. That would make your code clear.
- Malli...!
|
|
|
|
|
A flag brings many condition compare, like message handleing when do Windows API programming.
One mode introduce an extra if-else or switch-case ,
what about 10 modes?
system
|
|
|
|
|
You wanna to write all the handlers in a single functions. If that is the case I hope you have to have the switch-case/if-else in your program. The only thing you can reduce is the number of flags. Define the enum data type for your modes, rather having different flags. I suggested flags just because you had specified only two modes. But having the 'enum'ed your modes doesn't skip the conditional programming part in your message handler.
- Malli...!
|
|
|
|
|
It's a photo processing application with 10 more edit modes.
I saw a solution for this problem serveral years ago, but can't find it now.
system
|
|
|
|
|
what kind of solution was that exactly ?
- Malli...!
|
|
|
|
|
|
I use an enumeration.
The if/else or switch code to check the mode is insignificant
relative to the slowness of mouse messages...there's no performance
issues on a modern PC if that's what you're worried about.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I'm not worried about performance.
I don't want the message handler like a native window proc funciton.
(a big switch)
system
modified on Friday, September 19, 2008 8:34 PM
|
|
|
|
|
My project is SDI that first view is CFromView derive class.
Then I add second view with CScrollView derive class.
In this view I want to print out the data but I don't know how to do that.
Please advise me how can I do.
|
|
|
|