Proving that a node is the only child Say I have a graph of messages like this:

   A
   |
   B
  / \
 C   D


By including the parent hash in the message to be hashed I can show that B is a child of A, and C and D are children of B.

For example

Hash("This is message A") = ab3ed
Hash("This is message B + ab3ed") = e4c90
Hash("This is message C + e4c90") = 83e39
Hash("This is message D + e4c90") = 456aa


This way I can prove that C and D are children of B, and descendants of A.

Is there a way I can cryptographically prove that a certain node is the only child ie has no siblings?
Given only the information in the original question, it would be easy for an attacker to calculate generate an arbitrary message E, then calculate the Hash("This is message E + ab3ed") = 31415, and if the system can be tricked into trusting that 31415 is the hash of a valid message, there's no way to prove that E isn't really a valid sibling of B.

This may be why every hash tree implementation I've ever seen doesn't include the hash of the parent in the hash of the child.
Instead, it includes the hash of the children in the hash of the parent.

Say I have a graph of messages like this:

   A
   |
   B
  / \
 C   D


By including every child hash in the message to be hashed I can show that B is the only child of A, and C and D are the only children of B.

For example

Hash("This is message A; its child has hash e4c90") = ab3ed
Hash("This is message B; its children have hashes 83e39 and 456aa") = e4c90
Hash("This is message C") = 83e39
Hash("This is message D") = 456aa


Assuming a cryptographically secure hash, and assuming I somehow get the root hash ab3ed from a trusted source,
This way I can prove that C and D are the only children of B, and B is the only child of A -- i.e., B has no siblings.