montar uma árvore binária

19 views
Skip to first unread message

Francisco​ Dias Franco

unread,
Apr 7, 2022, 10:33:48 AM4/7/22
to late...@googlegroups.com
Olá.
Eu queria montar uma árvore binária, mas, não saiu como eu queria. Alguém poderia me dar uma ajuda?

Esse aqui é o resultado:

image.png


Esse é o algoritmo que estou utilizando:

\tikzstyle{connector} = [circle, minimum width=1cm, minimum height=1cm, text centered, text width=1cm, draw=black, fill=yellow!30]




\begin{tikzpicture}[node distance=3cm, scale=0.65, transform shape]

\node (raiz) [connector, minimum height=1cm, text centered, text width=1cm] {16};

%------------------------------%
\node (20) [connector, minimum height=1cm, text centered, text width=1cm, below right of=raiz] {20};

\node (21) [connector, minimum height=1cm, text centered, text width=1cm,below right of=20] {21};

\node (19) [connector, minimum height=1cm, text centered, text width=1cm,below left of=20] {19};
%-----------------------------%

%---------------------------------%
\node (8) [connector, minimum height=1cm, text centered, text width=1cm,below left of=raiz] {8};

\node (9) [connector, minimum height=1cm, text centered, text width=1cm,below right of=8] {9};

\node (7) [connector, minimum height=1cm, text centered, text width=1cm,below left of=8] {7};
%----------------------------------%


\draw [arrow] (raiz) -- (20);
\draw [arrow] (20) -- (21);
\draw [arrow] (20) -- (19);


\draw [arrow] (raiz) -- (8);
\draw [arrow] (8) -- (9);
\draw [arrow] (8) -- (7);

\end{tikzpicture}


Eu queria que o 19 ficasse ao lado de 7, teria como? Ou vou ter que estruturar mudando a posição de altura e largura?
--
Atenciosamente, 

                                                       Francisco Dias Franco

*Técnico em Eletrônica - IFSUL*
*Graduado em Matemática - UFPel*

Francisco​ Dias Franco

unread,
Apr 7, 2022, 10:35:21 AM4/7/22
to late...@googlegroups.com
Edit.: que o 19 ficasse ao lado do 9, um está sobreposto sobre o outro.

Emílio Kavamura

unread,
Apr 7, 2022, 1:12:27 PM4/7/22
to Latex-br

Tarso Boudet Caldas

unread,
Apr 7, 2022, 2:15:15 PM4/7/22
to late...@googlegroups.com
TikZ tem comandos específicos para montar árvore. Um exemplo: 

\begin{tikzpicture}[
  every node/.style={circle, fill, inner sep=2pt},
  level 1/.style={sibling distance = {4cm}, level distance=5cm}, 
  level 2/.style={sibling distance = {.55cm}, level distance = 3cm}
]
\node (A) [sibling distance = {6.5cm}] {} child {
     node [label=above left:{$M_1$}] {} child {
         node [label=below:{$M_2$}] {}
     }
};
\end{tikzpicture}

--
Você recebeu essa mensagem porque está inscrito no grupo "Latex-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+u...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/latex-br/9cc4d6b0-5af7-4bfc-9bd0-9816bbe857ddn%40googlegroups.com.

Tarso Boudet Caldas

unread,
Apr 7, 2022, 2:25:59 PM4/7/22
to late...@googlegroups.com
Montei um exemplo melhor 
\documentclass[tikz]{standalone}

\begin{document}

\begin{tikzpicture}[
  every node/.style={circle, fill, inner sep=2pt},
  level 1/.style={sibling distance = {4cm}, level distance=3cm},
  level 2/.style={sibling distance = {5cm}, level distance = 2cm}
]
\node (A) {}
  child {
    node [label=above left:{$M_1$}] {}
      child {
         node [label=below:{$M_2$}] {}
     }
  }
  child {
     node [label=above right:{$M_3$}] {} child {
         node [label=below:{$M_4$}] {}
     }
  };
\end{tikzpicture}
\end{document}

Francisco​ Dias Franco

unread,
Apr 7, 2022, 2:48:35 PM4/7/22
to late...@googlegroups.com
Muito obrigado pela respostas, vou dar uma testada mais tarde. 

E como eu faço pra fazer um seta tipo aquela de sentindo horário e anti-horário entre o 8, 7 e 9?
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+unsubscribe@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "Latex-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+unsubscribe@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/latex-br/CAJMHYYh2ZCt7KgsyBbJWirUAZAx37jLyixsSF9fF7w_C3ibozA%40mail.gmail.com.

Tarso Boudet Caldas

unread,
Apr 7, 2022, 3:00:50 PM4/7/22
to late...@googlegroups.com
Tenta a opção bend left ou bend right.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+u...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "Latex-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+u...@googlegroups.com.


--
Atenciosamente, 

                                                       Francisco Dias Franco

*Técnico em Eletrônica - IFSUL*
*Graduado em Matemática - UFPel*


--
Você recebeu essa mensagem porque está inscrito no grupo "Latex-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para latex-br+u...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/latex-br/CAMn7ijJWTAtgNcuJH3DVK1XGiUWnCkHchou7usqsP8u-zPRZkA%40mail.gmail.com.

Francisco​ Dias Franco

unread,
Apr 8, 2022, 7:06:22 AM4/8/22
to late...@googlegroups.com
Olá, Tarso e Emílio.

Tentei usar bend left ou bend right, mas, não deu muito certo. Buscando mais um pouco na internet achei a função arc.

\draw[ultra thick, ->,line width=1.5pt, -stealth, red!80!blue] (-11.5,-9.5) arc (-90:180:0.8);

Mas dá um trabalhão pra achar a posição certinha.

Sobre aquela árvore que você me passou, eu não consegui modificá-la. Eu precisava que ficasse um nó na esquerda e outro na direita.  

Acabei usando a técnica que o emílio passou, o código acabou ficando assim:

\begin{tikzpicture}[node distance=3cm, scale=0.5, transform shape]


\node (raiz) [connector, minimum height=1cm, text centered, text width=1cm] {16};

%------------------------------%
\node (21) [connector, minimum height=1cm, text centered, text width=1cm, below right of=raiz, xshift=4cm] {21};
\node (22) [connector, minimum height=1cm, text centered, text width=1cm,below right of=21] {22};
\node (19) [connector, minimum height=1cm, text centered, text width=1cm,below left of=21] {19};
%-----------------------------%

\node (20) [connector, minimum height=1cm, text centered, text width=1cm,below right of=19] {20};
\node (18) [connector, minimum height=1cm, text centered, text width=1cm,below left of=19] {18};

%---------------------------------%
\node (8) [connector, minimum height=1cm, text centered, text width=1cm,below left of=raiz,xshift=-4cm] {8};
\node (10) [connector, minimum height=1cm, text centered, text width=1cm,below right of=8] {10};
\node (7) [connector, minimum height=1cm, text centered, text width=1cm,below left of=8,xshift=-0.5cm] {7};
%----------------------------------%

\node (11) [connector, minimum height=1cm, text centered, text width=1cm,below right of=10] {11};
\node (9) [connector, minimum height=1cm, text centered, text width=1cm,below left of=10] {9};

%---------------------------------%
\node (5) [connector, minimum height=1cm, text centered, text width=1cm,below left of=7,xshift=-0.5cm] {5};
\node (3) [connector, minimum height=1cm, text centered, text width=1cm,below left of=5,xshift=-0.5cm] {3};
\node (6) [connector, minimum height=1cm, text centered, text width=1cm,below right of=5] {6};
\node (4) [connector, minimum height=1cm, text centered, text width=1cm,below left of=6,xshift=0.5cm] {4};
%----------------------------------%

%\draw[ultra thick, ->,line width=1.5pt, -stealth, red!80!blue] (0.5,0) arc (270:0:1.5);
\draw[ultra thick, ->,line width=1.5pt, -stealth, red!80!blue] (-11.5,-9.5) arc (-90:180:0.8);


%----------------------------------%

\draw [arrow] (raiz) -- (21);
\draw [arrow] (21) -- (22);
\draw [arrow] (21) -- (19);


\draw [arrow] (19) -- (20);
\draw [arrow] (19) -- (18);


\draw [arrow] (raiz) -- (8);
\draw [arrow] (8) -- (10);

\draw [arrow] (8) -- (7);

\draw [arrow] (10) -- (9);
\draw [arrow] (10) -- (11);

\draw [arrow] (7) -- (5);
\draw [arrow] (5) -- (3);
\draw [arrow] (5) -- (6);
\draw [arrow] (6) -- (4);

\end{tikzpicture}

O resultado está na imagem abaixo. Obrigado a todos pela ajuda.


image.png


Reply all
Reply to author
Forward
0 new messages