Next: copy-list, Previous: subst; subst-if; subst-if-not; nsubst; nsubst-if; nsubst-if-not, Up: Conses

`tree-1`—a *tree*.

`tree-2`—a *tree*.

`test`—a *designator* for a *function* of two *arguments*
that returns a *generalized boolean*.

`test-not`—a *designator* for
a *function* of two *arguments*
that returns a *generalized boolean*.

`generalized-boolean`—a *generalized boolean*.

`tree-equal`

tests whether two trees are of the same shape
and have the same leaves.
`tree-equal`

returns *true* if `tree-1` and `tree-2` are
both *atoms* and *satisfy the test*,
or if they are both *conses* and
the *car* of `tree-1` is `tree-equal`

to
the *car* of `tree-2` and
the *cdr* of `tree-1` is `tree-equal`

to
the *cdr* of `tree-2`.
Otherwise, `tree-equal`

returns *false*.

`tree-equal`

recursively compares *conses* but not any
other *objects* that have components.

The first argument to the `:test` or `:test-not`
function is `tree-1` or a *car* or *cdr* of `tree-1`;
the second argument is `tree-2` or a *car*
or *cdr* of `tree-2`.

(setq tree1 '(1 (1 2)) tree2 '(1 (1 2))) → (1 (1 2)) (tree-equal tree1 tree2) →true(eql tree1 tree2) →false(setq tree1 '('a ('b 'c)) tree2 '('a ('b 'c))) → ('a ('b 'c)) → ((QUOTE A) ((QUOTE B) (QUOTE C))) (tree-equal tree1 tree2 :test 'eq) →true

The consequences are undefined
if both `tree-1` and `tree-2` are circular.

equal, Section 3.6 (Traversal Rules and Side Effects)

The `:test-not` parameter is deprecated.