Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: AVL tree insertion - programming exercise
Date: Tue, 13 Oct 2026 03:52:15 -0700
Organization: A noiseless patient Spider
Lines: 28
Message-ID: <86bj8xj2jk.fsf@linuxsc.com>
References: <86ece2kppv.fsf@linuxsc.com> <11akqm4$c6h9$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Tue, 13 Oct 2026 10:52:16 +0000 (UTC)
Injection-Info: dont-email.me; logging-data="463729"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18lCNHfc20ZTU43wdTH2lJk/NzVRrf2lU0="; posting-host="065d2eee2cd7241f5f1e4f229d8fc207"
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:XFygAo+4OP/3DjMvLWLc8mBEvB8= sha1:boZkqwpv2Qzgykgt2gSPWbzii+M= sha256:DvmSe6K2vFKsFg7jPUWNMbtNDoYiWNr6UgqAl9De4PA= sha1:NFYxDDaNHxGEbUKyFYtY8+frUfQ= sha256:FnbUmdpMH1lCBOa9v610pRYgfjfkp3k2ow+/PPUzkp0=
Xref: csiph.com comp.lang.c:403092
"chine.bleu" writes:
> Tim Rentsch wrote:
>
>> sons[2] array. These links are basically pointers, but held
>> as uintptr_t so they can take one of the bits to mean "tall",
>> which means taller than the other subtree of the node. The
>> tree structure should maintain an invariant that at most one
>
> Memory is cheap. Do not encode tags into low bits of an address unless
> you really know what your doing. As a precaution check the return
> address of malloc
>
> p = malloc(m);
> if ((uintptr_t)p)&1!=0) abort();
Yes, in general the interface described will fall down on some
systems. But it's just an exercise. Feel free to use code along
the lines of the following (disclaimer: not tested) to confirm
the suitability of the pointer values being used:
Node *
new_node( int key ){
Node *r = malloc( sizeof *r );
assert( (uintptr_t)r %2 ==0 );
*r = (Node){ .key = key };
return r;
}