깊이 검색 귀속과 비귀속

저장하다.

  
  
  
  
  1. public int depth(BinaryTreeNode<T> root) {  
  2. int heightleft;  
  3. int heightright;  
  4. if (root == null) {  
  5. return 0;  
  6. }  
  7. heightleft = depth(root.left);  
  8. heightright = depth(root.right);  
  9. return (heightleft > heightright ? heightleft : heightright) + 1;  
  10. }  
  11.  
  12. public int depth() {  
  13. Stack<BinaryTreeNode<T>> stack = new Stack<BinaryTreeNode<T>>();  
  14. if (root == null)  
  15. return 0;  
  16. stack.push(root);  
  17. BinaryTreeNode<T> node = root;  
  18. BinaryTreeNode<T> popednode = null;  
  19. int height = 0;  
  20. int maxheight = 1;  
  21. System.out.println("===================start===================");  
  22. while (!stack.isEmpty()) {  
  23. if (node.left != null && node.left != popednode) {  
  24. System.out.println(" ");  
  25. stack.push(node.left);  
  26. node = node.left;  
  27. maxheight++;  
  28. else if (node.right != null && node.right != popednode) {  
  29. System.out.println(" ");  
  30. popednode = stack.pop();  
  31. stack.push(node.right);  
  32. node = node.right;  
  33. maxheight++;  
  34. else {  
  35. System.out.println(" ");  
  36. popednode = stack.pop();  
  37. if (!stack.isEmpty()) {  
  38. node = stack.peek();  
  39. else {  
  40. node = null;  
  41. }  
  42. if (maxheight > height) {  
  43. height = maxheight;  
  44. }  
  45. maxheight--;  
  46. }  
  47. }  
  48. return height;  
  49. }  

좋은 웹페이지 즐겨찾기