Ben bir görüşme için hazırlanmalarına yardımcı olmayan özyinelemeli bir BST için özyinelemeli işlevi dönüştürme sürecinde duyuyorum. Şimdiye kadar, postorder, arama, insert, silme ve dairesel bağlantılı listeye BST dönüştürme inorder Ön siparişi anladım. Ben yüksekliği elde etmek için yığın veya sıraları kullanmak ve bir BST ise bulmak için nasıl sergiyi sorun yaşıyorum. Herhangi bir ipucu büyük takdir. Ben kodu ama kod arkasında mantık aramıyorum.
ağaç yüksekliği ve isBST olmayan özyinelemeli uygulanması için yalancı kod
Yeni başlayanlar için, büyük iş böyle görüşmeler için hazırlık! Ben eğleniyor bu algoritmaların uğraşırken yaşıyorsanız umuyoruz.
en ikili ağaç bir BST olup olmadığını belirlemek için çalışmakla görevi ile başlayalım. Bunu yapmanın bir yolu, ağacın bir inorder yürüyüş yapmak ve elementler sıralı düzende olup olmadığını kontrol etmektir. ve ağaç bir BST yalnızca bu geçerli olacak. Zaten ağacın elemanlarının bir inorder yürüyüş yapmak için kod olduğundan inorder yürüyüşe çıkıp öğelerini gördüğümüz son öğenin takip göre sıralanır eğer, kolayca kontrol etmek için kod adapte gerekir inorder yürüyüş, ardından önceki öğeye üretilen her öğenin karşılaştırılması. İki sıralamada olmaması, ağaç bir BST değildir.
Ağacın yüksekliğini belirlemek için bir seçenek (inorder, ön sipariş, postorder) bugüne kadar geldim aramalarda söz alıp her noktada yığının yüksekliği takip etmek olacaktır. Burada fikir yığını hep köküne kadar herhangi düğümden geri yolun takip eder beri, sadece ağaç yürümek ve hiç yığın haline gördüğünü derin kaydedebilirsiniz olmasıdır. Bu maksimum derinliği daha sonra ağacın yüksekliğidir.
Bu yardımcı olur umarım! Ve görüşmeler iyi şanslar!
Ağacın yüksekliği bulmak için, Morris geçişi [O (n) zaman]] kullanabilirsiniz.
geçerli bir BST olup olmadığını kontrol etmek, ağacın bir inorder yürüyüş yapmak. bir diziye elemanları taşıyın. Dizi sıralanır veya BST doğrulamak için değil olmadığına bakın.













